【发布时间】:2018-11-22 08:04:11
【问题描述】:
我对 Swift 非常陌生,目前正在编写迷你高尔夫游戏。 但是,玩家可以击球 n 次。
我如何制作一个简单的视图来显示玩家还剩下多少命中?
【问题讨论】:
我对 Swift 非常陌生,目前正在编写迷你高尔夫游戏。 但是,玩家可以击球 n 次。
我如何制作一个简单的视图来显示玩家还剩下多少命中?
【问题讨论】:
我认为你想要这样的东西:
首先,我建议你创建一个在游戏重新启动时调用的函数,在那里你可以重置场景,重置玩家动作等......
你可以这样做:
func restart(){
//Everything you need to restart the game
}
要稍后调用它,您只需:
restart()
好的,我们来看看你现在问的问题: 声明一个包含玩家移动次数的 Int 变量:
var playerMoves = 10 //Whatever number you want
好的,你有一个包含移动次数的变量,现在你必须在你的场景中显示它,为此,创建一个 SKLabelNode:
let moveLabel = SKLabelNode()
现在,将标签文本设置为等于您的 playerMoves,设置位置、zPosition、字体,随心所欲:
moveLabel.text = "\(playerMoves)" //add this line to restart function that i mentioned and also set the variable playerMoves to "n" again.
moveLabel.position = ....
moveLabel.fontSize = ....
moveLabel.zPosition = ... //A number higher than any other zPosition
addChild(moveLabel) //Don't forget to add the label to scene!
就是这样!现在您必须在每次玩家移动时更新 playerMoves,为此我假设您正在以某种方式控制玩家移动(使用更新功能、触摸开始、创建功能等......)
所以...当玩家迈出一步时:
playerMoves -= 1
moveLabel.text = "\(playerMoves)"
就是这样!!! :) 希望对您有所帮助!
【讨论】:
有几种方法可以解决这个问题。最常见的方法是将 spritekit 场景覆盖在 scenekit 场景上。在 spritekit 场景中,您可以更新一个标签元素
代码可能类似于
let overlay = SKScene(fileNamed: "yourspritekitscene.sks")
yourScnView.overlaySKScene = menuOverlay
您还可以将 spritekit 场景指定为场景中 3D 对象的纹理。或者您可以将数字设置为倒计时时交换的纹理。
【讨论】: