Я реализую обнаружение столкновений в своей игре, и у меня есть немного проблемы с пониманием того, как вычислить вектор, чтобы зафиксировать совпадение формы при столкновении.Fix обнаружение столкновения обнаружение
Скажем, например, у меня есть два квадрата. squareA
и squareB
. Для них обоих я знаю их xCo
, yCo
, width
и height
. squareA
движется однако, поэтому он имеет скорость magnitude
и скорость angle
. Давайте сделаем вид, что обновляю игру раз в секунду. Я проиллюстрировал ситуацию ниже.
Теперь мне нужна формула, чтобы получить вектор для фиксации перекрытия. Если я применил этот вектор на красный квадрат (squareA
), они больше не должны перекрываться. Это то, чего я хочу достичь.
Может кто-нибудь помочь мне выяснить формулу для расчета вектора?
Бонусные баллы, если они построены на Java.
Бонусные бонусные баллы, если вы выберете ответ вместо ссылки на учебник по обнаружению столкновения.
Спасибо, ребята!
Также, как рассчитать новую скорость magnitude
и angle
? Я хотел бы sqaureA
продолжить движение вдоль оси х (скольжение по верхней части синий квадрат)
Вам действительно нужно сделать это настолько точной и сложной? Общий подход заключается в том, чтобы «попытаться» сделать еще один шаг, если произойдет столкновение. Если это так, вы просто остановите объект, который движется. Он используется даже во многих известных и инди-играх. – libik
Мне это нужно точно. Если, например, частота кадров низкая, ваш метод может оставить огромный пробел между двумя квадратами. например он просто останется там, где он находится на первом снимке. –
правда, но как я сказал, я сделал это так, как я сказал, это было не идеально, но это было достаточно хорошо. А потом, когда я играл в игры, я был удивлен, насколько знаменитые игры использовали точно такой же подход :). – libik