【问题标题】:How to add a view to SceneKit?如何向 SceneKit 添加视图?
【发布时间】:2018-11-22 08:04:11
【问题描述】:

我对 Swift 非常陌生,目前正在编写迷你高尔夫游戏。 但是,玩家可以击球 n 次。

我如何制作一个简单的视图来显示玩家还剩下多少命中?

【问题讨论】:

    标签: swift scenekit


    【解决方案1】:

    我认为你想要这样的东西:

    首先,我建议你创建一个在游戏重新启动时调用的函数,在那里你可以重置场景,重置玩家动作等......

    你可以这样做:

    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)"
    

    就是这样!!! :) 希望对您有所帮助!

    【讨论】:

    • 如果它是你想要的(显示玩家在屏幕上向左移动),那就是你必须做的,你不需要创建一个视图或类似的东西......
    【解决方案2】:

    有几种方法可以解决这个问题。最常见的方法是将 spritekit 场景覆盖在 scenekit 场景上。在 spritekit 场景中,您可以更新一个标签元素

    代码可能类似于

    let overlay = SKScene(fileNamed: "yourspritekitscene.sks")
    yourScnView.overlaySKScene = menuOverlay
    

    您还可以将 spritekit 场景指定为场景中 3D 对象的纹理。或者您可以将数字设置为倒计时时交换的纹理。

    【讨论】:

      猜你喜欢
      • 2018-03-22
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 2020-09-10
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      相关资源
      最近更新 更多