2016-04-29 13 views
0

私は、プレーヤーが敵の半径エリアに入ったときに自分のプレイヤーに追いつこうとしていますが、弾丸がobjectに達するか、radiusAreaと入力されたときに敵を止めさせます。ユニティ3D、敵追従号

詳細については、私の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 VAを変更する必要がありますプレイヤーが最も低いか、Physics2D.OverlapCircleAllと対戦してリストを確認してプレイヤーを見つける必要があります。または、レイヤーを変更して、重複テストにフィードする特定のレイヤーにプレーヤー自体だけが表示されるようにすることもできます。

+0

あなたはコードで書くことができますか? – Gaben

+0

あなたのgifは実際には何らかの理由でプレイヤーに続いて敵が止まるように見えます。それが止まる瞬間に、プレイヤーが動く以外は何も起こりません。敵は何かにこだわっていますか? 'playerInRange'がまだ真であるかどうかチェックしましたか? (Debug.Logなどを入れてください) –

関連する問題