You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Эта функция находит и решает все коллизии нашего игрового мира. Делает она это, попарно перебирая все объекты.
Сначала пройдёмся в цикле по всем объектам сцены (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, которая решит коллизию.
Эта функция находит и решает все коллизии нашего игрового мира. Делает она это, попарно перебирая все объекты.
Сначала пройдёмся в цикле по всем объектам сцены (scene). Это можно очень удобно сделать сделать с помощью цикла for-each, который появился в С++11: for (Object &obj1 : scene). Для каждого объекта проверим, что он подчиняется физическим законам нашего игрового мира. Для этого у него должен быть коллайдер (obj1.collider.enabled) - это некий прямоугольник, описывающий физические границы объекта. Кроме того, этот коллайдер должен быть динамическим (ColliderType::DYNAMIC), то есть объект может двигаться сам или под воздействием внешних сил, это можно проверить, используя метод of_type для obj.collider.
Если наш объект удовлетворяет условиям, описанным выше, точно так же переберём все объекты сцены в качестве второго объекта, коллизию с которым и будем проверять. Убедимся в следующих вещах:
И вот теперь, мы точно можем быть уверены, что obj1 и obj2 могут устроить коллизию, которую нужно будет устранить. Для этого воспользуемся функцией CheckCollision, которая вернёт коллизию, и останется только вызвать SolveCollision, которая решит коллизию.
Зависит от #2 и #3
The text was updated successfully, but these errors were encountered: