Я делаю тест на столкновение в С#, и у меня есть следующая проблема.
У меня есть объект1 и объект2, они движутся в определенном направлении.
Я хочу активировать эффект, только если объект1 и объект2 сталкиваются под определенным углом
данные у меня есть
Vector2 object1Position
Vector2 object1Direction
float object1ColliderRadius
Vector2 object2Position
Vector2 object2Direction
float object2ColliderRadius
Я уже сделал тест, чтобы узнать, сталкивается ли объект1 с объектом2.
Чего мне не хватает, так это угла столкновения, чтобы активировать или не активировать что-то еще в моем коде. следуйте этому изображению.
Каковы размеры объектов? Даже если их траектории пересекаются, объекты не обязательно сталкиваются.
Угол легко вычисляется, например, из скалярное произведение. Более интересный вопрос заключается в том, сталкиваются ли они вообще. Это зависит от скорости, конечно. С этим легко справиться, добавив дополнительное измерение. Вот бы поставить z = t
. Используя трехмерную аффинную геометрию, вы проверяете, пересекаются ли трехмерные линии. Если да, то объекты с двумерными траекториями сталкиваются. Это, конечно, для точечных объектов, поэтому в деталях вы должны проверить ближайшее расстояние линий.
предполагая постоянную скорость на данный момент
Было бы здорово, если бы вы могли предоставить минимальный воспроизводимый пример, если ваш прогресс на данный момент.