【问题标题】:Why my enemy not moving towards target为什么我的敌人不向目标移动
【发布时间】:2016-08-28 09:51:29
【问题描述】:

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

}

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

我做了什么,当 Zombie (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");
               }

        }

【问题讨论】:

    标签: c# unity3d unity5


    【解决方案1】:

    您的大门上似乎没有对撞机。在门上添加一个对撞机应该可以解决问题。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 但是据我所知...当距离小于 20 时,您的脚本将开始攻击大门,要解决此问题,您需要检查 targer.tag 是否为玩家。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多