Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Перемещение выстрелов в Box2d

Перемещение выстрелов в Box2d

Поделиться
HagalazПостоялецwww22 мая 201711:16#0
Добрый день. Можете подсказать как реализовать перемещение выстрелов (пуль) сделанных мобом по персонажу. То есть может в Box2D есть уже метод который перемещает тело из точки А в точку В по диагонали. Потому как если моб и персонаж находятся на одной линии тут сложностей нет можно просто applyLinearImpulse использовать. А вот если нужно смещать тело по диагонали, то получается нужно найти соотношение катетов и потом с таким же соотношением прикладываать силы к телу по X и Y?
kiparПостоялецwww22 мая 201711:46#1
Хотел сказать что без знания геометрии тяжело будет, но потом увидел что автор все-таки знает правильный ответ:
Hagalaz
> получается нужно найти соотношение катетов и потом с таким же соотношением
> прикладываать силы к телу по X и Y?
HagalazПостоялецwww29 мая 201711:15#2
Спасибо, так и сделал. Просто думал может уже есть готовое решение))
kvakvsПостоялецwww29 мая 201714:09#3
Есть два вида выстрелов:

1. Летящие предметы (projectile), которые представляются физ. объектом и попадание проверяется полноценной симуляцией полёта предмета с CCD (continuous collision detection). Без ЦЦД нет смысла, потому что быстро летящие объекты просто будут проскакивать через небольшие препятствия.
2. Пули и лучи, которые попадают моментально. Для таких полёт не имитируется и просто средствами физ. движка пускается луч и моментально даётся ответ, куда мы попали и кому принадлежит точка попадания.

DenBraunПостоялецwww29 мая 201716:49#4
kvakvs
> быстро летящие объекты просто будут проскакивать через небольшие препятствия
Что бы такого не было, коллайдеру устанавливается доп. свойство bullet: bodyDef.bullet = true. Это как раз для быстро движущихся объектов. А так да, не имеет смысла обрабатывать физикой быстрый снаряд, так как это доп. нагрузка и игрок скорее всего снаряд не увидит вообще, в этом случае лучше лучем однозначно.

Hagalaz
> А вот если нужно смещать тело по диагонали, то получается нужно найти
> соотношение катетов и потом с таким же соотношением прикладываать силы к телу
> по X и Y?
Вообще тут логика такая, сначало ищем нормализованный вектор к цели, а потом задаем линейную скорость снаряду, расчитываемую через умножение вектора на константу скорости, таким образом вы сможете регулировать скорость снаряда.

HagalazПостоялецwww30 мая 201712:57#5
DenBraun
> Вообще тут логика такая, сначало ищем нормализованный вектор к цели, а потом
> задаем линейную скорость снаряду, расчитываемую через умножение вектора на
> константу скорости, таким образом вы сможете регулировать скорость снаряда.
Не совсем понимаю как найти нормализованный вектор к цели, надо будет почитать.
Сделал так как я писал с соотношением катетов, все работоет нормально вроде бы

kvakvs
> быстро летящие объекты просто будут проскакивать через небольшие препятствия.
У меня снаряды летят не быстро, и игрок доллжен от них уворачиваться

DenBraunПостоялецwww30 мая 201714:00#6
Hagalaz
> нормализованный вектор
+ Показать

и собственно статья https://habrahabr.ru/post/131931/

/ Форум / Программирование игр / Физика

2001—2017 © GameDev.ru — Разработка игр