Hier ist ein Video auch - http://tinypic.com/r/mmagki/9Warum mein Feind nicht in Richtung Ziel bewegt
Hier ist mein start() Funktion
void Start()
{
target = GameObject.FindGameObjectWithTag("Player").transform;
}
und update() Funktion
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);
}
}
Mein Zombie (Feind) nähert sich Spieler, wenn Zombie mit der Wand getroffen wird, sollte er zum Tor gehen.
Was ich getan habe, sobald Zombie (Set Trigger = checked)
schlug mit der Wand, habe ich den Bezug von "Ziel" auf Object with tag 'gate'
geändert. Jetzt bewegt sich der Zombie nicht in Richtung Torobjekt (ich habe auch das Schild 'Tor' gesetzt). Er bewegt sich immer noch nur auf den Spieler zu. Die Referenz des Ziels kann nicht geändert werden.
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");
}
}
aber damit ich verstehe ... Ihr Skript wird angreifen das Tor, wenn die Entfernung weniger als 20 ist, um dies zu lösen, müssen Sie überprüfen, ob targer.tag Player ist. –