多次检测到碰撞
collision detected more than once
我正在做一个射击游戏,到目前为止我遇到的问题是当子弹与敌人碰撞并调用函数更新分数时,他们调用函数大约 10 次,这是我的 didBeginContact:
func didBeginContact(contact: SKPhysicsContact) {
var firstBody :SKPhysicsBody
var secondBody :SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask
{
firstBody = contact.bodyA
secondBody = contact.bodyB
}
else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if (firstBody.categoryBitMask == CollisionCategories.Bullet) &&
(secondBody.categoryBitMask == CollisionCategories.Enemy) {
println("Hit")
firstBody.node!.removeFromParent()
secondBody.node!.removeFromParent()
//change score
updateScore(1)
}
}
我遇到的问题是 Enemy 将其 physicsBody 配置为大小的纹理,通过将其从纹理更改为 circleOfRadius,效果很好。
发件人:
Enemy.physicsBody = SKPhysicsBody(texture: texture, size: texture.size())
收件人:
Enemy.physicsBody = SKPhysicsBody(circleOfRadius: (Enemy.size.width/2))
我正在做一个射击游戏,到目前为止我遇到的问题是当子弹与敌人碰撞并调用函数更新分数时,他们调用函数大约 10 次,这是我的 didBeginContact:
func didBeginContact(contact: SKPhysicsContact) {
var firstBody :SKPhysicsBody
var secondBody :SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask
{
firstBody = contact.bodyA
secondBody = contact.bodyB
}
else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if (firstBody.categoryBitMask == CollisionCategories.Bullet) &&
(secondBody.categoryBitMask == CollisionCategories.Enemy) {
println("Hit")
firstBody.node!.removeFromParent()
secondBody.node!.removeFromParent()
//change score
updateScore(1)
}
}
我遇到的问题是 Enemy 将其 physicsBody 配置为大小的纹理,通过将其从纹理更改为 circleOfRadius,效果很好。
发件人:
Enemy.physicsBody = SKPhysicsBody(texture: texture, size: texture.size())
收件人:
Enemy.physicsBody = SKPhysicsBody(circleOfRadius: (Enemy.size.width/2))