Mik*_*keB 7 sprite ios sprite-kit swift xcode6
我是使用SpriteKit/Swift进行编码的新手,并且遇到以下问题:一个角色应该通过跳入它们来收集硬币.检测碰撞并摆脱收集的硬币是没有问题的,但是我的角色在硬币消失之前会反弹.
该角色应该通过硬币飞行并在途中收集它.
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
提前致谢!
以下评论中的解决方案;)
小智 4
spritekit 的默认行为是一切都会发生碰撞,除非碰撞位掩码更改为 0。
在您不想反弹但接收来自它们的通知的所有对象中,将此值在代码中更改为 0。
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
player.physicsBody?.collisionBitMask = 0
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
coin.physicsBody?.collisionBitMask = 0
这将阻止这些物体相互弹跳。