有没有办法让 PhysX 4.1 CCT 使用自定义重力滑下斜坡?
Is there any way to allow a PhysX 4.1 CCT to slide down slopes using custom gravity?
默认情况下,PhysX 似乎将你脚上的"摩擦力"设置为无穷大,因此当站在倾斜的表面上时,用向下的力(如重力(调用move
不会导致你滑下来。
不过,这与我想要的完全相反。我知道PxControllerNonWalkableMode::ePREVENT_CLIMBING_AND_FORCE_SLIDING
,但这似乎没有使用任何类型的重力或加速度,也没有使用内置的slopeLimit
值。还有setPreventVerticalSlidingAgainstCeiling()
,所以地板上不存在类似的东西似乎有点奇怪。
那么,是否有任何内置方法可以禁用这种人工摩擦,并允许垂直滑动,就像CCT可以沿着墙壁和天花板滑动一样?如果不是,我如何生成一个遵循表面法线的新向下运动向量?我对与数学相关的任何事情都很糟糕,所以(伪(代码示例将不胜感激。
事实证明我看不懂,我的问题的答案就在SDK指南中。
我只需要实现一个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;
}
然后将PxControllerDesc->behaviorCallback
设置为我的PxControllerBehaviorCallback
类的实例。
相关文章:
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- C++自定义比较函数
- 如何比较自定义类的std::变体
- std::设置自定义比较器
- 如何正确实现和访问运算符的各种自定义枚举器
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 自定义先决条件对移动分配运算符有效吗
- 使用VS Code和CMake Tools运行自定义命令
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- std::ranges::elements_view,用于自定义类似元组的数据
- 跟随整数索引列表的自定义类迭代器
- 参数化自定义CMake工具链
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 如何在自定义类中启用'auto loops'?
- 使用QJsEngine在Qt中注册自定义类型
- Qt自定义QPush按钮未显示在布局上
- 自定义对象的dlib序列化在gcc中失败
- 自定义创建QFuture
- 有没有办法让 PhysX 4.1 CCT 使用自定义重力滑下斜坡?