这也是视频 - 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");
}
}
答案 0 :(得分:0)
看起来你的门上没有对撞机。将防撞器添加到门应该可以解决问题。
答案 1 :(得分:0)
首先验证所有标签是否正确安装,然后您需要至少在其中一个对象中添加一个刚体组件,如Unity Doc所说:OnTriggerEnter。我建议将它添加到僵尸并将UseGravity设置为false。并且这应该有效...对不起英语不好。