Вообще говоря, использование трехмерной геометрической сетки в качестве данных для обнаружения столкновений не очень хорошая идея.Обычно способ, которым мы делаем это, состоит в том, чтобы иметь гораздо более простую геометрию столкновений (в идеале составленную из простых примитивов, таких как коробки, цилиндры, сферы, плоскости - хотя в некоторых случаях можно использовать три сетки) .Плеер / камера обычно представляется в виде капсулы, и мы проверяем капсулу на геометрию.Реализация этой формы обнаружения столкновений в 3D REALLY трудна.
Если возможно свести игру лабиринта к двумерной задаче (например, вид сверху вниз) , тогда определите набор двумерных линий, которые определяют схему лабиринта, ирассматривайте плеер / камеру как круг.
Даже 2D-сценарий сложен.Лучшая система должна была бы решить множество одновременных уравнений, чтобы определить самое близкое пересечение.По мере увеличения размера лабиринта сложность решения становится крайне неприятной (т. Е. Вам необходимо использовать некоторую форму пространственного разбиения, такую как дерево BSP, деревья квадов и т. Д.)
Это очень сложная проблема, поэтому большинство здравомыслящих людей просто используют физический движок для выполнения этих вычислений.Я, вероятно, рекомендую сначала попытаться разобраться с простым 2D физическим движком, например, Box2D.Если вам абсолютно необходимо трехмерное обнаружение столкновений, то вам, вероятно, стоит взглянуть на PhysX, bullet или Havok.