我正在开发一个简单的2D游戏,并希望为每个被杀死的敌人实施一个计数器并将其显示在显示屏上直到游戏结束。
我该怎么做?我正在使用Xcode 7.3.1
我的敌人代码是:
func frecciaInCollisioneConNemico(freccia:SKSpriteNode, nemico:SKSpriteNode) {
print("Freccia ha colpito un nemico")
freccia.removeFromParent()
nemico.removeFromParent()
nemiciDistrutti += 1
print("hai distrutto \(nemiciDistrutti) nemici")
if (nemiciDistrutti >= 20) {
let rivela = SKTransition.flipHorizontalWithDuration(0.5)
let gameOverScene = GameOverScene(size: self.size, vinto: true)
self.view?.presentScene(gameOverScene, transition: rivela)
}
}
答案 0 :(得分:1)
你应该能够自己回答这个问题,因为这很容易。
创建标签
class GameScene: SKScene {
let enemiesKilledLabel = SKLabelNode(fontNamed: "HelveticaNeue")
override func didMoveToView(view: SKView) {
loadEnemiesKilledLabel()
}
private func loadEnemiesKilledLabel() {
enemiesKilledLabel.position = ...
enemiesKilledLabel.text = "0"
...
addChild(enemiesKilledLabel)
}
}
在你的死亡功能中,你只需更新文本。
...
nemiciDistrutti += 1
enemiesKilledLabel.text = "\(nemiciDistrutti)" // update text
这称为字符串插值,您可以在这里阅读更多相关内容
作为提示,您应该更改碰撞方法以接受选项。可能存在1个碰撞调用多个联系人的情况,因为多个身体部位发生碰撞。您的代码没有考虑到这一点,因此如果快速连续多次调用frecciaInCollisioneConNemico,您可能会崩溃。
将其更改为此
func frecciaInCollisioneConNemico(freccia: SKSpriteNode?, nemico: SKSpriteNode?) {
guard let freccia = freccia, nemico = nemico else { return }
freccia.removeFromParent()
nemico.removeFromParent()
...
}
最后我建议你尝试用英文写代码。
希望这有帮助