敌人攻击玩家



我创建了一个敌人来攻击一名玩家,这个敌人有枪。我希望当这把枪射击时,射击指向玩家的方向。我可以实例化,但不能改变方向子弹攻击我的球员在他的位置。

我该怎么做?

我正在尝试这个。

public class EnemyShotGun : MonoBehaviour {
     public GameObject[] gun; //gun attack player
     public GameObject prefabShot; //shot
     public float enemyShotSpeed;
     private float delayAttack; 
     public float timeAttack; 
     //player
     private Transform player;
     // Use this for initialization
     void Start () {
         player = GameObject.FindGameObjectWithTag("AirPlane").transform;
     }
     // Update is called once per frame
     void Update () {
         delayAttack += Time.deltaTime;
         if (delayAttack >= timeAttack){            
             for(int x = 0; x < gun.Length; x++){
                 GameObject shot = Instantiate(prefabShot, gun[x].transform.position, Quaternion.identity) as GameObject;
                 shot.rigidbody2D.AddRelativeForce(new Vector2(0, -500)); 
                 shot.transform.position = player.position; //bullet goes to player position
             }                        
             delayAttack = 0;
         }
     }
 }

您需要做的是向玩家添加力量。不朝向-Y方向。所以改变这个:

             shot.rigidbody2D.AddForce(new Vector2(0, -500));

类似的东西:

             shot.rigidbody2D.AddForce(((Vector2)(player.position - shot.transform.position)).normalized * 500);

其中CCD_ 1是从射门到球员的矢量。

也删除这行:

             shot.transform.position = player.position; //bullet goes to player position

它会立即将球移到球员的位置。

最新更新