我正在使用SpriteKit + Swift制作简单的Pong游戏。现在我正试图检测球何时击中屏幕边缘。当我运行我的代码并且球击中屏幕边缘时,由于某种原因,分数增加两次而不是一次。例如,控制台读取
Player 1 has a score of: 1.
Player 1 has a score of: 2.
当我点击屏幕右侧一次。
我在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 == ballCategory && secondBody.categoryBitMask == leftSideCategory {
player2Score++
print("Player 2 has a score of: \(player2Score).")
} else if firstBody.categoryBitMask == ballCategory && secondBody.categoryBitMask == rightSideCategory {
player1Score++
print("Player 1 has a score of: \(player1Score).")
}
}
答案 0 :(得分:1)
将var GoogleMapsAPI = require('googlemaps');
设置为firstBody.categoryBitMask
以外的其他内容。也许像ballCategory
这样设置为0x0(或0,或者你定义它们,无论哪种方式,将其设置为0)。然后,您的deadBallCategory
(球)将不会继续触发您的firstBody
功能。当您创建要添加到场景中的新球时,请务必将didBeginContact
设置为categoryBitMask
(无论如何您都会这样做)。