ios – 检测Sprite Collision而不在SpriteKit中反弹

我是使用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

提前致谢!

以下评论中的解决方案;)

解决方法

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

这将阻止这些对象相互反弹.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...