Немедленно проверьте, столкнется ли пуля со стеной

#phaser-framework

#фреймворк phaser

Вопрос:

введите описание изображения здесь

В настоящее время я проверяю update() , сталкивается ли пуля со стеной столкновения следующим образом:

 game.physics.arcade.collide(weapon.bullets, collisionLayer, collisionHandler, processCallback, this);
  

Это работает! Но когда я устанавливаю weapon.bulletSpeed = 2000; действительно высокое значение (выше 900), это больше не работает, и пули «туннелируют» через стены столкновения.

Я пытаюсь реализовать снайперскую винтовку, подобную винтовке, где для попадания пули в препятствие практически не требуется времени. Итак, я хотел бы знать, как рассчитать координаты столкновения пули со стеной столкновения в момент, когда игрок стреляет. Как я могу это сделать?

Ответ №1:

Пуля может перемещаться с большими шагами, чтобы фактически не пересекаться.

Подумайте о том, чтобы создать линию вида y = mx b для представления пути пули, а затем две вертикальные линии, представляющие стену.

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

Комментарии:

1. Спасибо за ответ. Но мой вопрос более специфичен для фреймворка phaser. Я хотел бы знать, есть ли встроенный метод для этой задачи.

Ответ №2:

Я нашел встроенное решение в phaser. Эта демонстрация показывает, как это работает:

http://phaser.io/examples/v2/tilemaps/tilemap-ray-cast