Ios SpriteKit:如何防止两个SKSpriteNodes碰撞(在Swift中)

Ios SpriteKit:如何防止两个SKSpriteNodes碰撞(在Swift中),ios,swift,sprite-kit,skphysicscontact,Ios,Swift,Sprite Kit,Skphysicscontact,我正在制作一个相对简单的游戏,由玩家、障碍物和硬币组成。我的目标是只在障碍物和玩家之间发生碰撞,玩家和硬币之间的接触触发didBeginContact 下面是一些代码: //declare categoryBitMasks struct physicsCategories { static let playerCategory : UInt32 = 1 static let coinCategory: UInt32 = 2 static let obstacleCateg

我正在制作一个相对简单的游戏,由玩家、障碍物和硬币组成。我的目标是只在障碍物和玩家之间发生碰撞,玩家和硬币之间的接触触发
didBeginContact

下面是一些代码:

//declare categoryBitMasks
struct physicsCategories {
    static let playerCategory : UInt32 = 1
    static let coinCategory: UInt32 = 2
    static let obstacleCategory : UInt32 = 3 
}

//assign physics categories 
playerNode!.physicsBody?.categoryBitMask = physicsCategories.playerCategory
playerNode!.physicsBody?.collisionBitMask = physicsCategories.obstacleCategory
playerNode!.physicsBody?.contactTestBitMask = physicsCategories.coinCategory


obstacleNode.physicsBody?.categoryBitMask = physicsCategories.obstacleCategory
obstacleNode.physicsBody?.collisionBitMask = physicsCategories.playerCategory
obstacleNode.physicsBody?.contactTestBitMask = 0


coinNode.physicsBody?.categoryBitMask = physicsCategories.coinCategory
coinNode.physicsBody?.collisionBitMask = 0
coinNode.physicsBody?.contactTestBitMask = physicsCategories.playerCategory

didBeginContact
功能将硬币从视图中移除,并将一枚硬币添加到用户货币银行。当玩家击中硬币时,此函数调用,但在硬币取出之前发生碰撞。碰撞对游戏性造成了很大的破坏,我一直无法找到有效的解决方案。有什么建议吗?

您的问题在于您的类别,请搜索位掩码的工作方式。你不能做1,2,3,它们必须是2的幂;0x1您的问题在于您的类别,搜索位掩码的工作方式。你不能做1,2,3,它们必须是2的幂;0x1您的问题是您的类别,请搜索位掩码的工作方式。你不能做1,2,3他们必须是2@Knight0fDragon那么我能做些什么呢,2,4,8?是的,1,2,4,8,16或者一个简单的方法来理解0x1@Knight0fDragon,谢谢!如果您想将其作为答案发布,我会将其标记为正确。实际上,我正在寻找一个类似的问题并标记此副本,因为它以前被问过。您的问题是您的类别,搜索位掩码如何工作。你不能做1,2,3他们必须是2@Knight0fDragon那么我能做些什么呢,2,4,8?是的,1,2,4,8,16或者一个简单的方法来理解0x1@Knight0fDragon,谢谢!如果你想把它作为一个答案,我会把它标记为正确的。我实际上是在寻找一个类似的问题,并标记这个副本,因为它以前被问过。