Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PhysX:碰撞onContact不工作_C#_Physx_Physx.net - Fatal编程技术网

C# PhysX:碰撞onContact不工作

C# PhysX:碰撞onContact不工作,c#,physx,physx.net,C#,Physx,Physx.net,我正在使用PhysX.NET(PhysX的C#wrapper),并试图在SimulationEventCallBack中使用onContact获取两个球体之间碰撞的通知 我已经为SimulationEventCallback创建了一个新的子类,并重写了OnContact方法,以便在发生冲突时给我一条消息。然后,我将场景的simulationEventCallback设置为我的子类的一个实例。即使两个球体(刚性动力学)明显碰撞,这也不起作用。下面是我的代码: //创建子类 public clas

我正在使用PhysX.NET(PhysX的C#wrapper),并试图在SimulationEventCallBack中使用onContact获取两个球体之间碰撞的通知

我已经为SimulationEventCallback创建了一个新的子类,并重写了OnContact方法,以便在发生冲突时给我一条消息。然后,我将场景的simulationEventCallback设置为我的子类的一个实例。即使两个球体(刚性动力学)明显碰撞,这也不起作用。下面是我的代码:


//创建子类

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语言包装中有类似的东西。

有同样的问题,你解决过吗?有同样的问题,你解决过吗?