Обнаружение столкновений путем скольжения по плоскости в XNA

Я пытаюсь разработать алгоритм обнаружения столкновений для создаваемого мной собственного клиента Minecraft. По сути, весь мир состоит из кубов, и игрок (или камера) должен иметь возможность стоять и двигаться против этих кубиков. Результат, который я хочу, показан на этом изображении: image

Зеленая линия - это вектор движения игрока. Когда игрок касается плоскости одного из кубов, я хочу, чтобы вектор изменился на тот, который перпендикулярен плоскости. Вектор, однако, должен сохранять всю свою скорость в направлении плоскости, но терять всю скорость по направлению к плоскости.

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

РЕДАКТИРОВАТЬ: Забыл упомянуть, что кубики хранятся в трехмерном массиве [x, y, z].

6
задан Bevin 14 January 2011 в 18:58
поделиться