2016-08-28 3 views
0

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

     } 

Antwort

0

Es sieht so aus, als ob Sie keinen Beschleuniger an Ihrem Tor haben. Hinzufügen eines Colliders zum Tor sollte den Trick tun.

0

Zuerst überprüfen Sie, ob alle Tags richtig platziert sind, dann müssen Sie mindestens eine Starrkörperkomponente in einem der Objekte hinzufügen, wie Unity Docs sagen: OnTriggerEnter. Ich empfehle, es dem Zombie hinzuzufügen und UseGravity auf false zu setzen. und damit sollte es funktionieren ... sorry für schlechtes englisch.

+0

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. –

Verwandte Themen