Сочетание обнаружения столкновений объектов мир-объект и объект

Я работаю над игрой в 3D-среде, используя OpenGL. Я внедряю систему обнаружения столкновений с быстрым эллипсоидом для большинства столкновений Объект / Мир, которая прекрасно работает.

Проблема, с которой я сталкиваюсь, — это объединение этой системы с системой обнаружения столкновений объектов и объектов. Реальная проблема, которую я пытаюсь решить на этапе проектирования, заключается в том, чтобы смотреть на объекты, которые потенциально могут остановить или изменить движение другого объекта (скажем, некоторые ящики, которые можно перемещать, но действуют как «стены», когда игрок сталкивается с ними).

Я полагаю, что мне придется сделать что-то похожее на следующее:

  1. Найти смещение объекта
  2. Найдите самое раннее время, когда объект сталкивается с миром (а)
  3. Найдите самое раннее время, когда объект сталкивается с ЛЮБЫМ другим объектом (конечно, в широкой фазе)
  4. Переместите объект вдоль смещения на меньшее из (a) или (b) и выполните ответ
  5. Итерируйте, пока смещение не будет полностью использовано

Это правильно? Кажется, это будет очень дорого, так как мне придется проверять каждый возможный объект столкновения на каждой итерации проверки.

Еще одна проблема: как насчет объектов, которые толкают другие объекты:

Например, скажем, ящик падает и толкает игрока. Мне нужно будет перемещать ящик до тех пор, пока он не коснется игрока, а затем выполнить весь процесс обнаружения столкновений для игрока, когда он выдвигается до завершения перемещения ящика. Также кажется, что это может стать чрезмерно дорогим, так как толчок может вызвать еще один толчок и так далее.

Любое руководство высоко ценится.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …