Я строю игру с игроками и ракетами.
Я хочу запустить ракету из P1 в P2. Ракете всегда нужно ровно пять секунд, чтобы достичь Р2. Ракета должна также отслеживать P2. Если P2 отодвигается дальше, ракета должна ускориться, чтобы удовлетворить временным ограничениям. Если P2 движется влево, ракета должна двигаться влево (и также менять скорость). Если P2 приближается к P1, ракета должна замедлиться.
Это возможно? Какой лучший способ сделать это?
В настоящее время у меня нет класса Vector2D (на самом деле это не игра, но аналогия работает хорошо), поэтому, если возможно, я бы хотел решение, которое не требует его.
Изменить: Это на самом деле не ракета либо. :)
Спасибо!
Ответы:
Редактирование обнадеживает. :)
Хорошо, вот простой цикл обновления ...
Предполагая, что когда мы запускаем ракету, мы инициализируем
remainingFlightTime = 5f
потом ...источник
Почему бы не перенести позицию и не обновить целевой пункт назначения по мере его изменения?
Возможно, вам придется посмотреть, как работает lerping, но это будет выглядеть примерно так:
Лерпя, вы в основном меняете положение объекта в течение определенного промежутка времени, так что вы можете сказать, что вы находитесь на 50% пути от А до В, и объект будет размещен там. Лерпинг прямой, поэтому вы всегда будете двигаться к цели (как вы хотите в комментариях).
источник