在不同的碰撞类别上使用单独的函数

Using separate functions on different collision categories

我目前正在设计一款具有三个 SKPhysics 类别的游戏(iOS Swift,Sprite Kit):

  1. 玩家
  2. 对象
  3. 平台

当这些类别中的任何一个发生冲突时,跟随函数 运行s:

func didBeginContact(contact: SKPhysicsContact) {
    println("Collision")
    self.gameOver = true

}

当玩家和物体发生碰撞时这很好,但当玩家在平台上行走时不应该运行。

如何为某些类别之间的碰撞设置特定的函数? 或者,换句话说,如何在上面指定不同的碰撞-提到函数?

谢谢大家!

您应该使用您的联系人参数并使用其属性。特别是 bodyA 和 bodyB 将允许您区分发生碰撞的物体。只需将它们放在 if 语句中,如下所示,

    if((bodyA.physicsBody == hero.physicsBody) && (bodyB.physicsBody == platform.physicsBody)){
    //Perform relevant code
    }
    else if((bodyA.physicsBody == hero.physicsBody) && (bodyB.physicsBody == heartPickup.physicsBody)){
//Perform relevant code
}

这将允许您 运行 不同的代码部分,具体取决于哪些 sprites/physics 实体已经连接。