SpriteKit を使用して小さなゲームをプログラミングしています。最初のテキストが「0」の SKLabelNode を SKScene に追加しました。次を使用して、この SKLabel のテキストを更新しようとすると:
func updateScoreLabel() {
scoreNumber++
scoreLabel.text = String(scoreNumber)
}
SKScene が呼び出されてから更新されるまでの間に、SKScene 全体の短い一時停止があります。ただし、これは最初に呼び出されたときにのみ発生するため、シーンの一時停止後にスコアラベルを更新するときにこれを 2 回実行すると、一時停止は発生しません。
メソッド呼び出しをトリガーしているのは... CC は、Int に型指定されたphysicsBody カテゴリBitMasks の列挙型です。
func isCollisionBetween(nodeTypeOne: CC, nodeTypeTwo: CC, contact: SKPhysicsContact) -> Bool {
let isAnodeTypeOne = contact.nodeA.physicsBody!.categoryBitMask == nodeTypeOne.rawValue
let isAnodeTypeTwo = contact.nodeA.physicsBody!.categoryBitMask == nodeTypeTwo.rawValue
let isBnodeTypeOne = contact.nodeB.physicsBody!.categoryBitMask == nodeTypeOne.rawValue
let isBnodeTypeTwo = contact.nodeB.physicsBody!.categoryBitMask == nodeTypeTwo.rawValue
if (isAnodeTypeOne && isBnodeTypeTwo) || (isAnodeTypeTwo && isBnodeTypeOne) {
return true
} else {
return false
}
}
もし
if isCollisionBetween(CC.TypeA, nodeTypeTwo: CC.TypeB, contact: contact) {
updateScoreLabel()
}
誰かが問題を指摘してください。同じ衝突が検出され、スコアを出力するために println ステートメントが使用されている場合、スコアの更新はシーンを一時停止しないので、SKLabelNode のテキストを変更することに固有のものだと思います