Ответ: PhysX wrapper
При реализации капсульного контроллера персонажа, я использовал главный параметр - вектор коллизии. Твоя задача определить, стоит персонаж, или не стоит (неважно, летит или скользит). Для того чтобы получить вектор коллизии, просто получаем все контакты, и получаем вектор контакта самого низкого, далее нужно получить Pitch наклон его, для этого немного математики. Собственно далее если стоит, то позицию ставим на текущую+вектор движения, который мы сами меняем от нажатий. При этом Позиционируем, а силу движения постоянно обнуляем, если он стоит. Но тут главная задача правильно назначать вектор движения, и весьма геморойно применить плавное сбавление, если скорость движения привязана не к инерции а к переменным (которые не локальны, а глобальны осям). Но и это естественно решаемо, работой более глубоко. Я делал разбивку на градус направления (по X,Z координате), и скорость. Таким образом более реально будет двигаться, и разворачиваться..
|