C# 敌人在玩家位置射击

C# 敌人在玩家位置射击,c#,unity3d,C#,Unity3d,我正在制作一个简单的子弹地狱游戏,我正在测试一些东西。我想让敌人的子弹在玩家开火后立即射向他 我尝试了一系列四元数方法,包括looktoward、FromToRotation、AngleAxis(等等),但似乎都不管用 void Start () { ... StartCoroutine("Shooting"); } IEnumerator Shooting() { while(dead != true) { Vector3 position

我正在制作一个简单的子弹地狱游戏,我正在测试一些东西。我想让敌人的子弹在玩家开火后立即射向他

我尝试了一系列四元数方法,包括looktoward、FromToRotation、AngleAxis(等等),但似乎都不管用

void Start () {
    ...
    StartCoroutine("Shooting");
}

IEnumerator Shooting()
{
    while(dead != true)
    {

        Vector3 position = new Vector3(rb.position.x, rb.position.y - 5f, 0);
        Instantiate(Ebullet, position, Quaternion.Euler(0, 0, player.transform.position.x));
        yield return new WaitForSeconds(t);
    }
}

我预计子弹会直接移动到玩家最后已知的位置,而不是敌人以错误的角度射击,每次玩家移动时,角度都会根据玩家的左右移动而变化。

因为您正在制作2D游戏,而不是:

Instantiate(Ebullet, position, Quaternion.Euler(0, 0, player.transform.position.x);
尝试:


因为您正在制作2D游戏,而不是:

Instantiate(Ebullet, position, Quaternion.Euler(0, 0, player.transform.position.x);
尝试:


在子弹脚本中,我使用“transform.Translate(Vector2.down*Time.deltaTime*speed)”使其向下移动,然后在敌人脚本中,我使用我在这里展示的这个协同程序。我应该在协同程序中插入LookAt方法吗?@Gonçaloivira等等,我刚刚意识到你正在制作一个2D游戏,并调整了我的答案,而不是矢量2.down,在你的翻译中尝试transform.up或transform.right,这取决于你可以在我制作的子弹脚本中使用的子弹方向,因此它可以使用“transform.Translate”向下移动(Vector2.down*Time.deltaTime*速度)“,然后在敌方脚本中,我使用了我在这里展示的这个协同程序。我应该在协同程序中插入注视方法吗?@Gonçaloivira等等,我刚刚意识到你在做一个2D游戏,并调整了我的答案,而不是矢量2。在你的翻译中,尝试transform.up或transform.right,取决于子弹的方向你可以使用