Работа с промахами снаряда и траекторией - PullRequest
0 голосов
/ 01 марта 2012

У меня есть несколько формул, которые я использую для стрельбы по цели, но все выходит из строя, когда игрок перемещается из своей исходной позиции, и пуля достигает старой позиции игрока, как и предполагалось.

КогдаPlayerPosition == BulletPosition, как сделать так, чтобы пуля продолжала двигаться в правильном направлении, если она промахивается?Моя проблема в том, что когда пуля достигает того места, где она должна была пройти, она останавливается, и мне нужна новая формула, чтобы она продолжала двигаться.

Если это попадает в игрока, это легко, убрать предмет, но я не могукажется, найти хорошее решение.Ниже приведен код, сейчас он очень прост.

 var movement = PlayerPosition - Position;
        if (movement != Vector2.Zero)
            movement.Normalize();
        //var angle = Math.Atan2(movement.Y, movement.X);
        Position += movement*_projectileMoveSpeed;

1 Ответ

1 голос
/ 01 марта 2012

Вы предполагали, что скорость пули будет зависеть от расстояния до игрока?

Я бы просто сохранил скорость, а затем использовал ее в будущих кадрах. В псевдокоде:

to shoot a bullet:
    direction is sign(PlayerPosition - Position)
in each frame:
    for each bullet:
        modify position by direction * projectileMoveSpeed
        handle collision (player or screen edge)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...