【发布时间】:2019-02-02 22:49:56
【问题描述】:
我有一个我正在处理的 Spritekit 项目,其中有一个玩家节点,你可以在屏幕上移动,然后有子弹节点向你射击。我的问题是子弹不仅会击中玩家,还会互相击中。我已经为玩家和子弹提供了他们自己的类别/碰撞/接触面罩。
我在这里指定了所有不同的类别掩码(其中一些可以忽略):
enum CategoryMask : UInt32 {
case playeragain = 11
case player = 1
case GBullet = 2
case BBullet = 3
case enemyships = 4
case coin = 5
case boss = 6
}
BBullet 是向你射击的子弹,而 player 是用户控制的节点。
然后我将这些掩码分配给每个节点:
player.physicsBody?.categoryBitMask = CategoryMask.player.rawValue
player.physicsBody?.collisionBitMask = CategoryMask.BBullet.rawValue | CategoryMask.coin.rawValue
player.physicsBody?.contactTestBitMask = CategoryMask.BBullet.rawValue | CategoryMask.coin.rawValue
bullet.physicsBody?.categoryBitMask = CategoryMask.BBullet.rawValue
bullet.physicsBody?.collisionBitMask = CategoryMask.player.rawValue
bullet.physicsBody?.contactTestBitMask = CategoryMask.player.rawValue
子弹和玩家之间的碰撞工作正常,我已经在“开始接触”功能中设置了如何处理每次碰撞。我想指定我不希望子弹相互碰撞。
【问题讨论】:
标签: swift sprite-kit collision categories skspritenode