Враг стреляет в позиции игрока - PullRequest
2 голосов
/ 17 апреля 2019

Я создаю простую игру Bullet Hell и проверяю некоторые вещи.Я хочу, чтобы вражеские пули стреляли в игрока, как только он выстрелил.

Я попробовал несколько методов Quaternion, включая LookTowards, 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);
    }
}

Я ожидал, что пули переместятся прямо в последнюю известную позицию игрока, вместо этого враг стреляет под неправильным углом, и каждый раз, когда игрок движется, угол меняется в зависимости от движения игрока влево или вправо.

1 Ответ

1 голос
/ 17 апреля 2019

Поскольку вы делаете 2D-игру, вместо:

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

Попробуйте:

Vector3 direction = player.transform.position-transform.position;
direction .Normalize();
float rotation = Mathf.Atan2(direction .y, direction .x) * Mathf.Rad2Deg;
Instantiate(Ebullet, position, Quaternion.Euler(0f, 0f, rotation - 90));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...