Я разрабатываю Java-игру (но на самом деле язык разработчика не имеет значения), включая округленные объекты, такие как шары или шайбы, и теперь работает над столкновениями. Я использую таймер, поэтому на каждом кадре я проверяю, произошло ли столкновение.Обнаружение столкновений: закругленный объект
Вот график, представляющий собой верхний правый объект.
В центре объекта представлена в точке [0,0], его радиус 10px и блоки пикселей.
Теперь, если мой объект (например, obj_1
) квадратный/ромбовидный (синяя линия), чтобы найти, если другой (obj_2
) сталкивается его я просто получить их координаты и проверяя Math.abs(obj_1.x - obj_2.x) + Math.abs(obj_1.y - obj_2.y) <= radius
я знаю, если есть столкновение.
Но проблема более сложная с формой круга (красная линия), поскольку она занимает больше места, и занятое пространство не ограничено прямой линией. Конечно, мне придется округлять некоторые значения (например, на предыдущем графике, если я хочу проверить столкновение на x = 2
, мне придется округлить значение y, которое выглядит как 9.5-10). Но я просто понятия не имею, как получить эту формулу. Любая помощь будет очень оценена.
Отлично, очень хорошо, он идеально подходит. Большое спасибо! – Rob