2016-04-29 130 views
0

當玩家進入敵人的半徑區域時,我試圖讓敵人跟隨我的玩家,但當我的子彈擊中object或進入radiusArea時使敵人停止跟隨。unity3D,敵人以下問題

見我的gif更多細節:

Gif

腳本:

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

我希望有人能幫助我:(

+2

你的GIF不工作,傷心! – Fattie

+0

就像喬說的,你圖像鏈接不工作。我修好了它。確保測試你的圖像鏈接時間。 – Programmer

回答

1

Physics2D.OverlapCircle檢測與只對撞機最低的Z值(如果多個在範圍內)。所以你要麼改變Z值因此玩家擁有最低的牌數,或者您需要使用Physics2D.OverlapCircleAll並查看列表以查找玩家。或者你可以改變你的圖層,所以只有玩家本身在你進入重疊測試的特定圖層上。

+0

你可以寫在代碼中嗎? – Gaben

+0

你的gif實際上看起來像敵人因爲某種其他原因停止跟隨玩家。在它停止的那一刻,除了玩家移動以外沒有其他事情發生。敵人被卡住了嗎?你檢查'playerInRange'是否仍然是真的嗎? (以Debug.Log爲例。) –