C# PhysX:碰撞onContact不工作
我正在使用PhysX.NET(PhysX的C#wrapper),并试图在SimulationEventCallBack中使用onContact获取两个球体之间碰撞的通知 我已经为SimulationEventCallback创建了一个新的子类,并重写了OnContact方法,以便在发生冲突时给我一条消息。然后,我将场景的simulationEventCallback设置为我的子类的一个实例。即使两个球体(刚性动力学)明显碰撞,这也不起作用。下面是我的代码:C# PhysX:碰撞onContact不工作,c#,physx,physx.net,C#,Physx,Physx.net,我正在使用PhysX.NET(PhysX的C#wrapper),并试图在SimulationEventCallBack中使用onContact获取两个球体之间碰撞的通知 我已经为SimulationEventCallback创建了一个新的子类,并重写了OnContact方法,以便在发生冲突时给我一条消息。然后,我将场景的simulationEventCallback设置为我的子类的一个实例。即使两个球体(刚性动力学)明显碰撞,这也不起作用。下面是我的代码: //创建子类 public clas
//创建子类
public class robotCollision : SimulationEventCallback
{
public override void OnContact(ContactPairHeader pairHeader, ContactPair[] pairs)
{
base.OnContact(pairHeader, pairs);
Rhino.RhinoApp.Write("Contact!");
}
}
//创建场景
scene = engine.CreateScene(sceneDesc);
scene.SetSimulationEventCallback(myContactCallback,0);
还有什么需要考虑的吗?有什么需要设置的标志吗? 如果这是一个非常幼稚的问题,我很抱歉,但我已经为此做了一整天的工作,似乎很简单,我无法理解
谢谢。
< P>我是PrxxC++用户,所以我不会把它标记为解决方案。 通常,您需要使用PxSimulationFilterShader
或PxSimulationFilterCallback
定义两个参与者之间的联系。
后者是您需要实现的一个特定回调,因此我怀疑您是否愿意这样做。
将提供默认的PxSimulationFilterShader
,因此无需担心
为了使过滤器着色器工作,必须定义碰撞组和遮罩中的角色。请参见PxSetGroup
和PxSetGroupsMask
。
组只是一个介于0-31之间的数字ID。
掩码是一个4短(PxU16)位集,定义“对于每个组,我应该与谁碰撞”。
现在团体面具有点挑剔。。背后的数学是。。烦人的
但是,您可以使用组掩码中的输入数据,使用更简单的方法实现自己的冲突过滤。PhysX代码和文档中有一些关于如何执行此操作的示例。看
再次,我是C++的答案,我确信C语言包装中有类似的东西。
< P>我是PrxxC++用户,所以我不会把它标记为解决方案。 通常,您需要使用PxSimulationFilterShader
或PxSimulationFilterCallback
定义两个参与者之间的联系。
后者是您需要实现的一个特定回调,因此我怀疑您是否愿意这样做。
将提供默认的PxSimulationFilterShader
,因此无需担心
为了使过滤器着色器工作,必须定义碰撞组和遮罩中的角色。请参见PxSetGroup
和PxSetGroupsMask
。
组只是一个介于0-31之间的数字ID。
掩码是一个4短(PxU16)位集,定义“对于每个组,我应该与谁碰撞”。
现在团体面具有点挑剔。。背后的数学是。。烦人的
但是,您可以使用组掩码中的输入数据,使用更简单的方法实现自己的冲突过滤。PhysX代码和文档中有一些关于如何执行此操作的示例。看
再次,我是C++的答案,我确信C语言包装中有类似的东西。
有同样的问题,你解决过吗?有同样的问题,你解决过吗?