Давайте предположим, что я использую этот персонаж.
(источник: iconbug.com )
Как бы вы реализовали обнаружение столкновений для него? Использование ограничивающего прямоугольника не является хорошим приближением, потому что форма птицы далеко не квадратная.
Я думал о том, чтобы внутри объекта была какая-то структура данных четырехугольного дерева, представляющая части изображения. Каждый лист может быть или false
(в случае, если он покрывает белое / прозрачное пространство снаружи птицы) или true
(в случае, если он представляет область птицы, например, клюв, глаз и т. Д.). Затем каким-то образом протестируйте единственное препятствие на сцене для столкновения с птицей.
Но мои проблемы в моем подходе:
- Я не знаю, как инициализировать дерево квадов.
- После инициализации четырехугольного дерева я не уверен, как пройти и использовать его, когда препятствие находится в пределах координат изображения.
Как бы вы сделали обнаружение столкновений с не квадратными персонажами?
Л.Е .: Другой подход, который я видел, заключался в использовании нескольких ограничивающих рамок. Например, у меня есть одна или несколько ограничительных рамок для клюва, затем несколько из них для волос или хвоста. Но это может стать утомительным. Если это правильный подход в моем случае, как бы я сгенерировал эти ограничивающие рамки? Я сомневаюсь, что я должен иметь их в своей программе.
LE2: я забочусь о довольно точных столкновениях. Я не могу представить, как один ограничивающий прямоугольник или круг может хотя бы прилично приблизиться к этой форме, поэтому такой подход не сработает.