Swift Spritekit 联系位掩码和分数标签
Swift Spritekit Contact Bitmask and Score Label
我是一个相当新的程序员,试图让它在像游戏这样的砖块断路器中,当球击中球拍时,我想在比分上加一分。我想我已经走到一半了,但想不通。
let BallCategory : UInt32 = 0x1 << 0 //
let BottomCategory : UInt32 = 0x1 << 1 //
let BlockCategory : UInt32 = 0x1 << 2 //
let PaddleCategory : UInt32 = 0x1 << 3 //
bottom.physicsBody?.categoryBitMask = BottomCategory
bottom.physicsBody?.contactTestBitMask = BallCategory
paddle.physicsBody?.categoryBitMask = PaddleCategory
paddle.physicsBody?.contactTestBitMask = BallCategory
paddle.physicsBody?.collisionBitMask = BallCategory
ball.physicsBody?.categoryBitMask = BallCategory
ball.physicsBody?.contactTestBitMask = BottomCategory | PaddleCategory
ball.physicsBody?.contactTestBitMask = PaddleCategory
var score = 0
func didBeginContact(contact: SKPhysicsContact) {
score = +1
}
let label = SKLabelNode(fontNamed: "Chalkduster")
label.text = String(score)
label.fontSize = 50
label.fontColor = SKColor.whiteColor()
label.position = CGPoint (x: 568, y: 600)
addChild(label)
这些是我的代码的三个部分,我认为我需要更改才能让我的游戏中的分数正常工作,如果你能帮助我,我将不胜感激。
在增加 didBeginContact
中的 score
之前,您必须测试碰撞体是否具有正确的 bitmasks
。您可以使用以下代码来增加 score
球拍与球之间的碰撞。
func addScore() {
score += 1
scoreLabel.text = "\(score)"
}
func didBeginContact(contact: SKPhysicsContact) {
var body1 : SKPhysicsBody!
var body2 : SKPhysicsBody!
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
body1 = contact.bodyA
body2 = contact.bodyB
}
else {
body1 = contact.bodyB
body2 = contact.bodyA
}
if body1.categoryBitMask == BallCategory && body2.categoryBitMask == PaddleCategory {
addScore()
}
}
我是一个相当新的程序员,试图让它在像游戏这样的砖块断路器中,当球击中球拍时,我想在比分上加一分。我想我已经走到一半了,但想不通。
let BallCategory : UInt32 = 0x1 << 0 //
let BottomCategory : UInt32 = 0x1 << 1 //
let BlockCategory : UInt32 = 0x1 << 2 //
let PaddleCategory : UInt32 = 0x1 << 3 //
bottom.physicsBody?.categoryBitMask = BottomCategory
bottom.physicsBody?.contactTestBitMask = BallCategory
paddle.physicsBody?.categoryBitMask = PaddleCategory
paddle.physicsBody?.contactTestBitMask = BallCategory
paddle.physicsBody?.collisionBitMask = BallCategory
ball.physicsBody?.categoryBitMask = BallCategory
ball.physicsBody?.contactTestBitMask = BottomCategory | PaddleCategory
ball.physicsBody?.contactTestBitMask = PaddleCategory
var score = 0
func didBeginContact(contact: SKPhysicsContact) {
score = +1
}
let label = SKLabelNode(fontNamed: "Chalkduster")
label.text = String(score)
label.fontSize = 50
label.fontColor = SKColor.whiteColor()
label.position = CGPoint (x: 568, y: 600)
addChild(label)
这些是我的代码的三个部分,我认为我需要更改才能让我的游戏中的分数正常工作,如果你能帮助我,我将不胜感激。
在增加 didBeginContact
中的 score
之前,您必须测试碰撞体是否具有正确的 bitmasks
。您可以使用以下代码来增加 score
球拍与球之间的碰撞。
func addScore() {
score += 1
scoreLabel.text = "\(score)"
}
func didBeginContact(contact: SKPhysicsContact) {
var body1 : SKPhysicsBody!
var body2 : SKPhysicsBody!
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
body1 = contact.bodyA
body2 = contact.bodyB
}
else {
body1 = contact.bodyB
body2 = contact.bodyA
}
if body1.categoryBitMask == BallCategory && body2.categoryBitMask == PaddleCategory {
addScore()
}
}