首页 > 解决方案 > Swift - 如何为特定节点添加场景边界?

问题描述

我正在尝试使用 SpriteKit 开发一个 IOS 游戏,并且我想在场景中添加一个物理体,这样玩家就无法穿过屏幕的边缘。同时,我希望一些节点(例如——从天上掉下来的炸弹)能够穿过屏幕的边缘。

我知道我可以使用以下行将物理体添加到场景中:

self.physicsBody = SKPhysicsBody (edgeLoopFrom: self.frame)

我的问题是如何让“炸弹”物体穿过这样的身体,同时让“玩家”物体受制于这些边界。

标签: swiftsprite-kitgamekit

解决方案


答案是相对于categoryBitMaskcollisionBitMask涉及的物理体的。

例如,对于场景:

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
}

推荐阅读