在不同的碰撞类别上使用单独的函数
Using separate functions on different collision categories
我目前正在设计一款具有三个 SKPhysics 类别的游戏(iOS Swift,Sprite Kit):
- 玩家
- 对象
- 平台
当这些类别中的任何一个发生冲突时,跟随函数 运行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 实体已经连接。
我目前正在设计一款具有三个 SKPhysics 类别的游戏(iOS Swift,Sprite Kit):
- 玩家
- 对象
- 平台
当这些类别中的任何一个发生冲突时,跟随函数 运行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 实体已经连接。