【发布时间】:2016-04-15 23:06:52
【问题描述】:
我想知道是否有人可以为我提供使用 3 个节点的帮助,我知道我是否只有 2 个节点。身体 A 和身体 B 但我正在努力添加第三个身体,我希望它像身体 C 一样简单,但事实并非如此。 这是下面的相关代码:
struct CollisionCategoryBitmask {
static let Player: UInt32 = 0x00
static let Enemy1: UInt32 = 0x01
static let Enemy2: UInt32 = 0x02
}
func didBeginContact(contact: SKPhysicsContact) {
var updateHud = false
_ = (contact.bodyA.node != player) ? contact.bodyA.node : contact.bodyB.node
updateHud = slowDown(player)
}
下面这个函数是为了让玩家在接触 Enemy1 时减速
func slowDown (player: SKNode) -> Bool {
player.physicsBody?.velocity = CGVector(dx: 0, dy: -50.0)
return true
}
以下是为了在联系 Enemy2 时结束游戏
func endGame (player: SKNode) -> Bool {
endOfGame()
return true
}
目前这两个功能都可以工作,但一次只能一个,所以当玩家接触敌人 1 或 2 时。我目前可以让玩家放慢速度或让游戏结束,只需更改 updateHud = slowDown(player) 行。那么如何调整代码以在玩家接触敌人 1 或 2 时产生两种不同的结果。
谢谢
【问题讨论】:
-
static let Player: UInt32 = 0x00无效,您是说玩家与任何人发生碰撞。位掩码的工作方式是您有 32 个“开关”(或标志),您可以打开或关闭每个开关。如果玩家打开了开关 1,那么敌人应该寻找所有打开了开关 1 的玩家,如果敌人找到了,就说他们发生了碰撞
标签: swift sprite-kit collision-detection collision bitmask