Я использую PhysX 3.3.0.PhysX - получить скорость контроллера
Мой персонаж является контроллером капсулы, и мне нужно иметь возможность получить фактическую скорость контроллера, что кажется намного сложнее, чем нужно.
Я попытался получить скорость актера, связанного с контроллером, после основной симуляции сцены, однако это просто возвращает фиктивные значения, скорее всего, из-за того, что контроллер является просто кинематическим актером под капотом ,
Теперь единственной альтернативой, о которой я могу думать, было бы следить за скоростью самостоятельно, но это не так просто. Я могу легко отслеживать свои собственные изменения скорости, например. скорость, подаваемая через входы перемещения. Однако это точно, пока контроллер не сталкивается ни с чем. После перемещения контроллера через функцию перемещения скорость контроллера могла быть изменена столкновениями с полом или стеной и т. Д. Функция move возвращает флаги столкновений, но они только говорят мне, было ли какое-то столкновение с боками , нижней или верхней, но это недостаточно точно, чтобы получить новую скорость вручную.
Это кажется довольно большим недосмотром, поэтому, возможно, я просто что-то пропустил. Как я могу точно отслеживать скорость контроллера, если PhysX не предоставляет функцию для этого?
// EDIT
Это, как я захватывая скорость после моделирования сцены:
void ControllerPhysObj::UpdateVelocity()
{
physx::PxRigidDynamic *actor = m_controller->getActor();
physx::PxVec3 vel = actor->getLinearVelocity();
m_velocity.x = vel.x;
m_velocity.y = vel.y;
m_velocity.z = vel.z;
}
m_controller является PxCapsuleController.
опубликуйте код своих попыток получить скорость – LearnCocos2D
Не так много, чтобы показать, я просто использую 'getLinearVelocity', но я добавил код в любом случае. – Silverlan
Каковы значения, возвращаемые? как вы знаете, что они фиктивные? – LearnCocos2D