如何在spritekit Swift 3上添加分数计数器
我想在我的比赛中得分,这需要每秒增加3分 我写了这样的代码如何在spritekit Swift 3上添加分数计数器,swift,swift3,sprite-kit,scoring,Swift,Swift3,Sprite Kit,Scoring,我想在我的比赛中得分,这需要每秒增加3分 我写了这样的代码 var scoreLabel = SKLabelNode() let scoreLabelName = "scoreLabel" var count = 0 override func didMove(to view: SKView) { self.physicsWorld.gravity = CGVector(dx: 0, dy: 0) physicsWorld.contactDelegate = self
var scoreLabel = SKLabelNode()
let scoreLabelName = "scoreLabel"
var count = 0
override func didMove(to view: SKView) {
self.physicsWorld.gravity = CGVector(dx: 0, dy: 0)
physicsWorld.contactDelegate = self
addPlayer()
scoreLabel = SKLabelNode(fontNamed: "ScoreLabel")
scoreLabel.name = scoreLabelName
scoreLabel.fontSize = 125
scoreLabel.fontColor = SKColor.white
scoreLabel.text = "\(count)"
print(size.height)
scoreLabel.position = CGPoint(x: frame.size.width / 2, y: frame.size.height - 300)
self.addChild(scoreLabel)
}
请记住……在SpriteKit中,您有一个定期调用的方法,它为您提供了
currentTime
:)
所以你可以:
- 添加一个变量以跟踪“上次更新的时间”
- 对照
update
- 如果差异>1…宾果!您可以更新“上次更新时间”值以匹配
,并更新您想要更新的内容currentTime
var scoreLabel = SKLabelNode()
let scoreLabelName = "scoreLabel"
var count = 0
var lastUpdateTime: TimeInterval?
然后更新:
override func update(_ currentTime: TimeInterval) {
var delta = TimeInterval()
if let last = lastUpdateTime {
delta = currentTime - last
} else {
delta = currentTime
}
if delta > 1.0 {
//tick tock, a second has passed, update lastUpdateTime
lastUpdateTime = currentTime
count += 3
scoreLabel.text = "\(count)"
}
}}
希望这能给你一些线索。你走对了方向-你是否需要实现任何代码来提高分数?func评分(){var time:TimeInterval if time>1.0{count+=3 time=0}这是真的还是假的?把你所有与这个函数相关的代码都放到你的问题中去——很难把它看作是一个注释。你可以使用update:method,比如给定答案中建议的方法,也可以使用SKActions。