SceneKit碰撞偶尔会失败

Fer*_*edo 9 game-physics ios scenekit swift

我正在尝试模拟足球比赛.我有一个SCNPlane模拟法庭.我已经导入了足球目标3D模型(.dae文件)和球模型(.dae).

我的球有一个动态的物理体,飞机静止,目标是运动学.我为每个SCNNode 设置了categoryBitMaskcontactTestBitMask.

当我将球射向球门时,有时球会反弹并且表现得如预期的那样,但有时候球会穿过球门并穿过它.

我已经分配了SCNPhysicsContactDelegate并且didBeginContact当球再次反弹时触发,但是当球越过它时,则不调用该方法.

你知道会发生什么吗?

谢谢!

ARG*_*Geo 0

实例属性categoryBitMask定义了物理体属于哪些类别,并contactTestBitMask定义了哪些类别的物体会导致与该物理体的相交通知。

\n\n

您需要一个collisionBitMask实例属性来定义哪些类别的物理体可以与该物理体发生碰撞

\n\n
var collisionBitMask: Int { get set }\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

当两个物理体相互接触时,可能会发生碰撞。SceneKit 通过执行按位 AND 运算将 body\xe2\x80\x99s 碰撞掩码与其他 body\xe2\x80\x99s 类别掩码进行比较。如果结果是非零值,则主体受到碰撞的影响。每个身体独立地选择是否想要受到另一个身体的影响。例如,您可以选择避免碰撞计算,这会对物体\xe2\x80\x99s 的速度造成可忽略不计的变化。\n 默认值为all(每个位都启用的位掩码),指定物体将与所有其他类别的机构。

\n
\n\n
static var all: SCNPhysicsCollisionCategory { get }\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

allType Property物理体\xe2\x80\x99scollisionBitMask属性的默认值。

\n
\n