2016-08-28 26 views
0

这里是一个视频也 - http://tinypic.com/r/mmagki/9为什么我的敌人不是朝着目标

这里是我的start()函数

void Start() 
    { 

     target = GameObject.FindGameObjectWithTag("Player").transform; 

    } 

和update()函数

void Update() 
    { 

      transform.LookAt(target); 
      float step = speed * Time.deltaTime; 
      distance = (transform.position - target.position).magnitude; 

      //Debug.Log("Now distance -" + distance); 

      if (distance < 20) 
      { 

       //  print("In Range"); 
       transform.GetComponent<Animation>().Play("attack", PlayMode.StopAll); 

       if (isAttacking == false) 
       { 
        isAttacking = true; 
        Hit.playerHealth -= Random.Range(20f, 25f) * Time.deltaTime; 
        Hit.playerHealth -= Random.Range(20f, 25f); 
        // StartCoroutine(MyCoroutine(4)); 
        //  print("Player Health Status = " + Hit.playerHealth);    

        if (Hit.playerHealth <= 0) 
        { 
         //     print("Player dead"); 
        } 
       } 
       else 
       { 

       } 

      } 
      else 
      { 
       //  print("Out of Range"); 
       transform.position = Vector3.MoveTowards(transform.position, target.position, step); 
       transform.GetComponent<Animation>().Play("walk", PlayMode.StopAll); 
      } 

}

我的僵尸(敌人)正在接近玩家,当僵尸被撞墙时,他应该去大门。

我做了什么,只要僵尸(Set Trigger = checked)撞墙,我已经改变了'目标'的参考Object with tag 'gate'。 现在僵尸并没有朝着门对象移动(我也设置了标记“门”)。他仍然只朝着球员的方向前进。无法更改目标的参考。

void OnTriggerEnter(Collider col) 
     { 
       if (col.gameObject.tag == "wall") 
      { 

       target = GameObject.FindGameObjectWithTag("gate").transform; 
       Debug.Log("Yes its a onTrigger Enter function , hitting with wall"); 
       } 

     } 

回答

0

它看起来像你没有在你的门上的对撞机。将对撞机添加到大门应该可以做到。

0

首先验证所有标签是否正确放置,然后您需要至少在其中一个对象中添加刚体组件,如Unity Docs所述:OnTriggerEnter。我建议将它添加到僵尸并将UseGravity设置为false。并与此它应该工作...对于坏英语抱歉。

+0

但是据我所知,当距离小于20时,你的脚本将开始攻击门,为了​​解决这个问题,你需要检查targer.tag是否为玩家。 –

相关问题