-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Эта функция находит и решает все коллизии нашего игрового мира. Делает она это, попарно перебирая все объекты.
Сначала пройдёмся в цикле по всем объектам сцены (scene). Это можно очень удобно сделать сделать с помощью цикла for-each, который появился в С++11: for (Object &obj1 : scene). Для каждого объекта проверим, что он подчиняется физическим законам нашего игрового мира. Для этого у него должен быть коллайдер (obj1.collider.enabled) - это некий прямоугольник, описывающий физические границы объекта. Кроме того, этот коллайдер должен быть динамическим (ColliderType::DYNAMIC), то есть объект может двигаться сам или под воздействием внешних сил, это можно проверить, используя метод of_type для obj.collider.
Если наш объект удовлетворяет условиям, описанным выше, точно так же переберём все объекты сцены в качестве второго объекта, коллизию с которым и будем проверять. Убедимся в следующих вещах:
- obj1 != obj2. Объект не может столкнуться сам с собой.
- У obj2 включён компонент коллайдер.
- У коллайдера obj2 тип DYNAMIC или STATIC.
И вот теперь, мы точно можем быть уверены, что obj1 и obj2 могут устроить коллизию, которую нужно будет устранить. Для этого воспользуемся функцией CheckCollision, которая вернёт коллизию, и останется только вызвать SolveCollision, которая решит коллизию.
Зависит от
Metadata
Metadata
Assignees
Labels
Type
Projects
Status