[英]Collision Detection in SpriteKit + Swift
我正在使用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).")
}
}
將firstBody.categoryBitMask
設置為firstBody.categoryBitMask
以外的其他ballCategory
。 可能是諸如deadBallCategory
類的deadBallCategory
,它設置為0x0(或0,或者無論如何定義它們,將其設置為0)。 然后,您的firstBody
(球)將不會繼續觸發您的didBeginContact
函數。 創建要添加到場景中的新球時,請確保將categoryBitMask
設置為ballCategory
(無論如何看起來都可以)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.