1375 подписчиков
Промежуточная победа. Наконец, обработчик столкновений (его начальная версия) - готов. Уверен, будут правки.
Главная проблема, которая никак не решалась - это "пролёт" насквозь. Теоретически, два прямоугольника довольно легко обрабатывать, но когда речь заходит о произвольном количестве прямоугольников - всё усложняется; требуется некоторый универсальный алгоритм. Он не сложный, однако требует учесть несколько факторов.
Во-первых, оптимизация: если на экране тысячи прямоугольников ограничений, то проверка столкновения с каждым из них может привести к сильному падению производительности: нужна оптимизация.
Во-вторых, как сказано выше - "пролёты" насквозь. При сближении координат тел появляются такие "белые пятна", внутри которых проверка на сближение не срабатывает.
В-третьих, и это самое непонятное, угловые соприкосновения, когда прямоугольник игрока залезает на препятствие где-то под углом 40-50 градусов. Справедливое выравнивание на выполненное смещение может привести к скачкам объекта в неподходящее место.
В-четвёртых, как сделать всё это, не выполняя слишком много проверок. Операция сравнения одна из самых дорогостоящих и чем меньше их будет - тем быстрее будет работать приложение. Поэтому вариант расписать все варианты и варианты внутри вариантов хотя и допустимо, но не эффективно.
Что дальше? А дальше я попробую сделать пробный вариант с нормально работающим прототипом. Ох, сколько же впереди ещё работы... такая простенькая игрушка, а как подумаю, сколько всего надо ещё сделать...
1 минута
16 октября 2022