【发布时间】:2018-12-22 01:16:45
【问题描述】:
tl;dr 我正在尝试在 ARKit 中的平面(即桌子)上为 SKScene 设置动画。我可以通过用它对 SCNPlane 进行纹理化来让 SKScene 出现,但它没有动画。如何让动画工作?
嗨,
我正在尝试制作一个 ARKit 游戏,它本质上只是一个 2D 游戏,渲染在一个固定在 3D 世界中的平面上。我将游戏作为 SKScene 对象。通常在 ARKit 中渲染 SKScene 时,我会创建一个 SCNPlane 并将材质设置为 SCNMaterial 并扩散 SKScene。这就是我当前代码的样子(在我的renderer(_:didAdd:for:):
guard let scene = SKScene(fileNamed: "GameScene") else { return }
let scnMaterial = SCNMaterial()
scnMaterial.diffuse.contents = scene
let plane = SCNPlane(width: 0.8, height: 0.6)
plane.firstMaterial = scnMaterial
let planeNode = SCNNode(geometry: plane)
这使得 SKScene 很好,但永远不会调用 update(_:) 函数。经过一些研究,我发现当将 SKScene 扩散到 SCNMaterial 上时,它会暂停场景。因此,我将self.isPaused = false 添加到了SKScene 的sceneDidLoad()。这使update(_:) 函数运行,但 SCNPlane 上的纹理永远不会更新,因此 SKScene 保持其初始外观。当 SKScene 在 UIViewController 中自行运行时,它可以正常工作。
有谁知道如何让动画 SKScene 在 SCNPlane 上制作动画?归根结底,我只希望 SKScene 在 ARKit 中的平面(即桌子)上进行动画处理,因此任何替代方法都可以。
【问题讨论】:
标签: swift sprite-kit scenekit arkit