检测 SceneKit 中粒子和节点之间的碰撞

Detect collision between particles and nodes in SceneKit

我有几个节点具有 Kinematic phyisicsBodyType,我希望它与一些粒子系统交互,我的意思是我想检测碰撞并在节点与来自一个粒子的 nay 粒子碰撞时执行一些代码粒子系统。我通过添加事件处理程序找到了一种方法,但我不太确定如何使用它(link to method here)。

谁能解释一下我如何使用该事件处理程序(最好是在 Swift 中解释一下),或者你能给我另一个想法吗?

最后很简单。首先,您必须将节点数组分配给粒子系统的colliderNodes 属性。在那之后,swift 中的代码看起来像这样:

    particleSystem.handleEvent(SCNParticleEvent.Collision, forPropierties:[SCNParticlePropertyContactPoint], withBlock: {
        (data: UnsabeMutablePointer<UnsafeMutablePointer<Void>>, dataStride: UnsafeMutablePointer<Int>, indicies: UnsafeMutablePointer<UInt32>, count:Int) in 
        //code on detection collision goes here
})

每个参数都在 apple documentation 中进行了简要说明。