2016-04-29 8 views
0

Ich versuche, Feinde meinen Spieler folgen, wenn der Spieler den Radius Bereich eines Feindes betritt, aber den Feind aufhören zu folgen, wenn meine Kugel object trifft oder eingibt.unity3D, Feind folgende Ausgabe

Siehe meine gif für weitere Einzelheiten:

Gif

Skript:

using UnityEngine; 
using System.Collections; 

public class FlyEnemyMove : MonoBehaviour 
{ 
    public float moveSpeed; 
    public float playerRange; 
    public LayerMask playerLayer; 
    public bool playerInRange; 

    PlayerController thePlayer; 

    // Use this for initialization 
    void Start() 
    { 
     thePlayer = FindObjectOfType<PlayerController>(); 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     flip(); 
     playerInRange = Physics2D.OverlapCircle(transform.position, playerRange, playerLayer); 
     if (playerInRange) 
     { 
      transform.position = Vector3.MoveTowards(transform.position, thePlayer.transform.position, moveSpeed * Time.deltaTime); 

      //Debug.Log(transform.position.y); 

     } 
     //Debug.Log(playerInRange); 
    } 

    void OnDrawGizmosSelected() 
    { 
     Gizmos.DrawWireSphere(transform.position, playerRange); 
    } 

    void flip() 
    { 
     if (thePlayer.transform.position.x < transform.position.x) 
     { 

      transform.localScale = new Vector3(0.2377247f, 0.2377247f, 0.2377247f); 
     } 
     else 
     { 

      transform.localScale = new Vector3(-0.2377247f, 0.2377247f, 0.2377247f); 
     } 
    } 
} 

Ich hoffe jemand kann mir helfen :(

+2

Ihr gif funktioniert nicht, traurig! – Fattie

+0

Genau wie Joe sagte, Sie Image Link funktioniert nicht. Ich habe es repariert. Stellen Sie sicher, dass Sie Ihre Bildlinkzeit testen. – Programmer

Antwort

1

Physics2D.OverlapCircle mit der nur die Collider erkennt niedrigster z-Wert (wenn mehrere im Bereich liegen) .So müssen Sie entweder das z va ändern Lues so der Spieler hat den niedrigsten oder müssen Sie mit Physics2D.OverlapCircleAll arbeiten und überprüfen Sie die Liste, um den Player zu finden. Oder Sie können Ihre Layer ändern, sodass nur der Player selbst auf der Ebene liegt, die Sie in den Überlappungstest einspeisen.

+0

können Sie es in Code schreiben? – Gaben

+0

Ihr Gif sieht tatsächlich so aus, als ob der Feind aus irgendeinem anderen Grund dem Spieler nicht mehr folgt. In dem Moment, in dem es aufhört, passiert nichts anderes als dass der Spieler sich bewegt. Bleibt der Feind auf etwas stecken? Hast du überprüft, ob 'playerInRange' immer noch wahr ist? (Setzen Sie ein Debug.Log zum Beispiel.) –