Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(FixCollisions) Решение всех коллизий в сцене #4

Open
mchernigin opened this issue Apr 1, 2024 · 0 comments · May be fixed by #43
Open

(FixCollisions) Решение всех коллизий в сцене #4

mchernigin opened this issue Apr 1, 2024 · 0 comments · May be fixed by #43
Assignees

Comments

@mchernigin
Copy link
Member

mchernigin commented Apr 1, 2024

Эта функция находит и решает все коллизии нашего игрового мира. Делает она это, попарно перебирая все объекты.

Сначала пройдёмся в цикле по всем объектам сцены (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, которая решит коллизию.

Зависит от #2 и #3

@mchernigin mchernigin converted this from a draft issue Apr 1, 2024
@vasthecat vasthecat moved this to Todo in MIT Game 2024 [1] Apr 11, 2024
@danilasar danilasar self-assigned this Apr 22, 2024
@nonseww nonseww moved this from Todo to In Progress in MIT Game 2024 [1] Apr 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress
Development

Successfully merging a pull request may close this issue.

2 participants