Swift 我如何在这个Spritekit游戏中添加分数系统?
我想不出在我的游戏中添加计分系统的方法。有人能帮我用一种可视化的GUI方式吗?非常感谢。我试着用一个int变量来做这件事,但它不起作用。如果你真的帮助我,再次感谢你Swift 我如何在这个Spritekit游戏中添加分数系统?,swift,sprite-kit,Swift,Sprite Kit,我想不出在我的游戏中添加计分系统的方法。有人能帮我用一种可视化的GUI方式吗?非常感谢。我试着用一个int变量来做这件事,但它不起作用。如果你真的帮助我,再次感谢你 import SpriteKit let BallCategoryName = "ball" let PaddleCategoryName = "paddle" let BlockCategoryName = "block" let BlockNodeCategoryName = "blockNode" let BallCateg
import SpriteKit
let BallCategoryName = "ball"
let PaddleCategoryName = "paddle"
let BlockCategoryName = "block"
let BlockNodeCategoryName = "blockNode"
let BallCategory : UInt32 = 0x1 << 0 // 00000000000000000000000000000001
let BottomCategory : UInt32 = 0x1 << 1 // 00000000000000000000000000000010
let BlockCategory : UInt32 = 0x1 << 2 // 00000000000000000000000000000100
let PaddleCategory : UInt32 = 0x1 << 3 // 00000000000000000000000000001000
class GameScene: SKScene, SKPhysicsContactDelegate {
var isFingerOnPaddle = false
override func didMoveToView(view: SKView) {
super.didMoveToView(view)
let bottomRect = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, 1)
let bottom = SKNode()
bottom.physicsBody = SKPhysicsBody(edgeLoopFromRect: bottomRect)
addChild(bottom)
// 1. Create a physics body that borders the screen
let borderBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
// 2. Set the friction of that physicsBody to 0
borderBody.friction = 0
// 3. Set physicsBody of scene to borderBody
self.physicsBody = borderBody
physicsWorld.gravity = CGVectorMake(0, 0)
let ball = childNodeWithName(BallCategoryName) as! SKSpriteNode
ball.physicsBody!.applyImpulse(CGVectorMake(10, -10))
ball.physicsBody!.allowsRotation = false
ball.physicsBody!.friction = 0
ball.physicsBody!.restitution = 1
ball.physicsBody!.linearDamping = 0
ball.physicsBody!.angularDamping = 0
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
var touch = touches.first as! UITouch
var touchLocation = touch.locationInNode(self)
if let body = physicsWorld.bodyAtPoint(touchLocation) {
if body.node!.name == PaddleCategoryName {
println("Began touch on paddle")
isFingerOnPaddle = true
}
}
}
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
// 1. Check whether user touched the paddle
if isFingerOnPaddle {
// 2. Get touch location
var touch = touches.first as! UITouch
var touchLocation = touch.locationInNode(self)
var previousLocation = touch.previousLocationInNode(self)
// 3. Get node for paddle
var paddle = childNodeWithName(PaddleCategoryName) as! SKSpriteNode
// 4. Calculate new position along x for paddle
var paddleX = paddle.position.x + (touchLocation.x - previousLocation.x)
// 5. Limit x so that paddle won't leave screen to left or right
paddleX = max(paddleX, paddle.size.width/2)
paddleX = min(paddleX, size.width - paddle.size.width/2)
// 6. Update paddle position
paddle.position = CGPointMake(paddleX, paddle.position.y)
}
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
isFingerOnPaddle = false
}
导入SpriteKit
让BallCategoryName=“ball”
让PapperCategoryName=“桨”
让BlockCategoryName=“block”
让BlockNodeCategoryName=“blockNode”
让BallCategory:UInt32=0x1为游戏添加分数系统,您首先需要跟踪您的分数,它可以是一个Int变量
至于以图形用户界面的形式直观地显示,您可以使用一个SKLabelNode来表示屏幕上的文本,并根据用户的当前分数进行更新,该分数将由您使用的Int变量表示
至于持久化数据,请查看NSCoding,nsuser默认存储该分数,以便用户下次运行应用程序时可以再次使用该分数。