Swift - 如何为特定节点添加场景边界?
Swift - How to add scene boundaries for specific nodes?
我正在尝试使用 SpriteKit 开发一个 IOS 游戏,我想在场景中添加一个物理实体,这样玩家就无法穿过屏幕的边缘。同时,我希望一些节点(例如 - 从天而降的炸弹)能够穿过屏幕的边缘。
我知道我可以使用以下行向场景添加物理体:
self.physicsBody = SKPhysicsBody (edgeLoopFrom: self.frame)
我的问题是,如何让 "bomb" 物体穿过这样的物体,同时让 "player" 物体必须遵守这些边界。
答案是相对于categoryBitMask
和collisionBitMask
所涉及的物理体
例如对于场景:
if let scenePB = scene.physicsBody {
scenePB.categoryBitMask = 1
scenePB.collisionBitMask = 2 // collides with player
}
对于玩家:
if let playerPB = player.physicsBody {
playerPB.categoryBitMask = 2
playerPB.collisionBitMask = 1+4 // collides with scene and bombs
}
对于任何炸弹:
if let bombPB = bomb.physicsBody {
bombPB.categoryBitMask = 4
bombPB.collisionBitMask = 2 // collides with player
}
我正在尝试使用 SpriteKit 开发一个 IOS 游戏,我想在场景中添加一个物理实体,这样玩家就无法穿过屏幕的边缘。同时,我希望一些节点(例如 - 从天而降的炸弹)能够穿过屏幕的边缘。
我知道我可以使用以下行向场景添加物理体:
self.physicsBody = SKPhysicsBody (edgeLoopFrom: self.frame)
我的问题是,如何让 "bomb" 物体穿过这样的物体,同时让 "player" 物体必须遵守这些边界。
答案是相对于categoryBitMask
和collisionBitMask
所涉及的物理体
例如对于场景:
if let scenePB = scene.physicsBody {
scenePB.categoryBitMask = 1
scenePB.collisionBitMask = 2 // collides with player
}
对于玩家:
if let playerPB = player.physicsBody {
playerPB.categoryBitMask = 2
playerPB.collisionBitMask = 1+4 // collides with scene and bombs
}
对于任何炸弹:
if let bombPB = bomb.physicsBody {
bombPB.categoryBitMask = 4
bombPB.collisionBitMask = 2 // collides with player
}