SpriteKit + Swift中的碰撞检测

时间:2015-10-22 02:00:07

标签: ios swift sprite-kit

我正在使用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).")
    }

}

1 个答案:

答案 0 :(得分:1)

var GoogleMapsAPI = require('googlemaps'); 设置为firstBody.categoryBitMask以外的其他内容。也许像ballCategory这样设置为0x0(或0,或者你定义它们,无论哪种方式,将其设置为0)。然后,您的deadBallCategory(球)将不会继续触发您的firstBody功能。当您创建要添加到场景中的新球时,请务必将didBeginContact设置为categoryBitMask(无论如何您都会这样做)。