为什么我的敌人没有朝着目标前进

时间:2016-08-28 09:51:30

标签: c# unity3d unity5

这也是视频 - 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);
            }

}

我的僵尸(Enemy)正在接近玩家,当僵尸被墙击中时,他应该去登机口。

我做了什么,一旦僵尸(Set Trigger = checked)撞墙,我就改变了目标&#39;到Object with tag 'gate'。 现在僵尸并没有走向门对象(我已经设置了标签&#39; gate&#39;)。他仍然只是朝着球员的方向发展。无法更改目标的引用。

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");
               }

        }

2 个答案:

答案 0 :(得分:0)

看起来你的门上没有对撞机。将防撞器添加到门应该可以解决问题。

答案 1 :(得分:0)

首先验证所有标签是否正确安装,然后您需要至少在其中一个对象中添加一个刚体组件,如Unity Doc所说:OnTriggerEnter。我建议将它添加到僵尸并将UseGravity设置为false。并且这应该有效...对不起英语不好。