1287 подписчиков
Технически, существует примерно бесконечное количество способов определить столкновение двух объектов (в моём случае препятствие и машинка), однако не все они подходят. Идеальный способ содержит как можно меньше (в идеале 0 или 1) операций ветвления и опирается на рассчёт.
Выбранный мною способ оказался... слишком точным и, как любой слишком точный подход, повлёк за собой сложности его использования. Это не проблема, но какой смысл в ювелирном молоточке, когда нужна кувалда?
Самым простым решением задачи столкновения объектов является столкновение рамочек объектов: каждый объект заключается в прямоугольник и сверяются координаты машинки и препятствий. Данный метод отлично работает ровно до тех пор, пока объект не начинает иметь более сложную форму (которую по каким-то причинам нельзя запихнуть в прямоугольник), либо окружающие препятствия становятся слишком сложными.
Но выход есть: усложнение структуры рамочек, т.к. разделение одного прямоугольника на несколько и отработка взаимодействия каждого из прямоугольников. Пример: машинка (практически идеальный прямоугольник), повёрнутая на 45 градусов уже занимает почти в два раза больше места, чем до поворота. Изогнутая линия трассы тоже не вписывается в квадрат или прямоугольник.
По правде говоря, мне не очень нравится идея столкновения множества прямоугольников, хотя и она может иметь довольно изящное решение. В любом случае, хоть это задача и важна, она далеко не первостепенна и должна быть решена просто и дёшево.
1 минута
11 августа 2022