【问题标题】:SpriteKit SKLabelNode attached to ARAnchor doesn't appear or appears fullscreen附加到 ARAnchor 的 SpriteKit SKLabelNode 不出现或全屏显示
【发布时间】:2021-05-07 21:22:34
【问题描述】:

我在世界原点位置向我的场景视图添加一个锚点:

let configuration = ARWorldTrackingConfiguration()
sceneView.session.run(configuration)
sceneView.session.add(anchor: ARAnchor(name: "world origin", transform: matrix_identity_float4x4))
sceneView.presentScene(SKScene())

然后我选择在我的锚点位置显示一个 SKLabelNode

func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? {
    // Create and configure a node for the anchor added to the view's session.
    let labelNode = SKLabelNode(text: "????")
    labelNode.horizontalAlignmentMode = .center
    labelNode.verticalAlignmentMode = .center
    return labelNode;
}

当我运行应用程序并四处移动相机时,我注意到我根本看不到节点(我只看到普通相机),或者我看到整个屏幕都是紫色的(好像标签节点字体很大)。

我尝试添加labelNode.fontSize = 5,但仍然有同样的问题。

如何让节点正确显示在我的 SpriteKit 场景中?

【问题讨论】:

    标签: ios sprite-kit arkit aranchor


    【解决方案1】:

    当我将我的代码与 Apple 的默认 SpriteKit + ARKit 示例应用程序进行比较时,主要区别在于:

    sceneView.presentScene(SKScene())
    

    在他们的示例代码中,他们使用:

    // Load the SKScene from 'Scene.sks'
    if let scene = SKScene(fileNamed: "Scene") {
        sceneView.presentScene(scene)
    }
    

    看起来SKScene.sks 的大小为 750 x 1334,因此相当于:

    sceneView.presentScene(SKScene(size: CGSize(width: 750, height: 1334)))
    

    当我将代码更新到最后一行时(即给 SKScene 一个大小),一切都会正确显示。但是,我不认为硬编码宽度和高度是做事的正确方法。我会问separate question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-07
      • 2021-03-12
      • 2019-02-10
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多