C++ 有没有办法允许PhysX 4.1 CCT使用自定义重力从斜坡上滑下?
默认情况下,PhysX似乎会将脚上的“摩擦力”设置为无穷大,这样,使用向下的力(如重力)调用C++ 有没有办法允许PhysX 4.1 CCT使用自定义重力从斜坡上滑下?,c++,game-physics,physx,C++,Game Physics,Physx,默认情况下,PhysX似乎会将脚上的“摩擦力”设置为无穷大,这样,使用向下的力(如重力)调用move,站在倾斜的表面上时不会导致你向下滑动 但这恰恰与我想要的相反。我知道PxControllerNonWalkableMode::ePREVENT\u granning\u AND\u FORCE\u slide,但这似乎没有使用任何重力或加速度,我也没有使用内置的slopeLimit值。还有setPreventVerticalSlidingAgainst天花板(),所以地板上没有类似的东西似乎有点
move
,站在倾斜的表面上时不会导致你向下滑动
但这恰恰与我想要的相反。我知道PxControllerNonWalkableMode::ePREVENT\u granning\u AND\u FORCE\u slide,但这似乎没有使用任何重力或加速度,我也没有使用内置的slopeLimit
值。还有setPreventVerticalSlidingAgainst天花板()
,所以地板上没有类似的东西似乎有点奇怪
那么,是否有任何内置的方法来消除这种人为摩擦,并允许垂直滑动,就像CCT可以沿着墙壁和天花板滑动一样?如果没有,我如何生成一个新的向下运动向量,它遵循曲面法线?我对任何与数学相关的东西都非常糟糕,因此(psuedo-)代码示例将受到赞赏。结果证明我不会阅读,我的问题的答案就在后面 我只需要实现一个
PxControllerBehaviorCallback
,并让它为每个函数返回PxControllerBehaviorFlag::eCCT_SLIDE
virtual physx::PxControllerBehaviorFlags getBehaviorFlags(const physx::PxShape& shape, const physx::PxActor& actor) {
return physx::PxControllerBehaviorFlag::eCCT_SLIDE;
}
virtual physx::PxControllerBehaviorFlags getBehaviorFlags(const physx::PxController& controller) {
return physx::PxControllerBehaviorFlag::eCCT_SLIDE;
}
virtual physx::PxControllerBehaviorFlags getBehaviorFlags(const physx::PxObstacle& obstacle) {
return physx::PxControllerBehaviorFlag::eCCT_SLIDE;
}
然后将pxcontrollerdebc->behaviorCallback
设置为我的PxControllerBehaviorCallback
类的一个实例