检测SKNode和粒子之间的碰撞?

时间:2016-02-17 19:25:50

标签: swift sprite-kit collision-detection particle-system

我有这个创造一些熔岩的功能:

func setupLava() {
    let emitter = SKEmitterNode(fileNamed: "Lava.sks")!
    emitter.particlePositionRange = CGVector(dx: 200, dy: 0.0)
    emitter.advanceSimulationTime(3.0)
    emitter.zPosition = 4
    emitter.position = CGPoint(x: self.frame.width / 2, y: 300)
    lava.addChild(emitter)

}

我想检测玩家何时与它发生碰撞。我该怎么做?

1 个答案:

答案 0 :(得分:4)

来自文档:

  

SpriteKit中的对象不代表粒子。这意味着你   不能对粒子执行与节点相关的任务,也不能关联   具有粒子的物理体使它们与其他物体相互作用   内容。虽然没有可见的类代表粒子   通过发射器节点添加,您可以将粒子视为具有   属性与任何其他对象一样。

因此,您不能使用SpriteKit来检测与发射的Lava的碰撞,但是您可以将物理主体与Lava对象相关联并与之碰撞而不是与单个发射的节点相撞。使用节点categoryContactMask的{​​{1}},contactBitMask字段来检测联系人。