这里是一个视频也 - 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");
}
}
但是据我所知,当距离小于20时,你的脚本将开始攻击门,为了解决这个问题,你需要检查targer.tag是否为玩家。 –