我是SpriteKit/Swift編碼的新手,它有以下問題: 一個角色應該通過跳入硬幣來收集硬幣。檢測碰撞和擺脫收集的硬幣沒有問題,但我的角色在硬幣消失之前會反彈。檢測SpriteKit中沒有反彈的Sprite碰撞
角色應該飛過硬幣並在途中收集它。
let playerCategory: UInt32 = 0x1 << 0
let coinCategory: UInt32 = 0x1 << 1
player = SKSpriteNode(texture: playerTexture)
player.physicsBody = SKPhysicsBody(circleOfRadius: player.size.height/2)
player.physicsBody?.dynamic = true
player.physicsBody?.allowsRotation = false
player.physicsBody?.categoryBitMask = playerCategory
player.physicsBody?.contactTestBitMask = coinCategory
var coin:SKSpriteNode = SKSpriteNode(texture: coinTexture)
coin.physicsBody = SKPhysicsBody(circleOfRadius: coin.size.height/2)
coin.physicsBody?.dynamic = false
coin.physicsBody?.allowsRotation = false
coin.physicsBody?.categoryBitMask = coinCategory
coin.physicsBody?.contactTestBitMask = playerCategory
func playerDidCollideWithCoin(player:SKSpriteNode, thisCoin:SKSpriteNode) {
thisCoin.removeFromParent()
coinsCollected++
}
碰撞檢測工作正常,像這樣的,但正如我所說的,我怎麼能避免的碰撞,並用「飛通過」更換呢?
我正在使用Xcode 6 Beta 7
在此先感謝!
解決方案在下面的評論;)spritekit的
設置collisionBitMask,使其不包含錢幣/玩家類別。如果您不需要硬幣與任何物體碰撞,只需將其設置爲0.請注意接觸(確定重疊)和碰撞(接收來自接觸的衝動)之間的差異。 – LearnCocos2D 2014-09-04 14:25:28
明白了!謝謝!將硬幣collisionBitMap設置爲0,將玩家collisionBitMap設置爲groundCategory,這樣我的玩家就不會落地了。 – MikeB 2014-09-04 14:34:56