tl; dr我正在尝试在ARKit(即表格)中的平面上为SKScene设置动画。通过使用SCNPlane对其进行纹理化,可以使SKScene出现,但是它没有动画。如何使动画起作用?
嗨,
我正在尝试制作ARKit游戏,该游戏实质上只是在锚定于3D世界中的飞机上渲染的2D游戏。我将游戏作为SKScene对象。通常,在ARKit中渲染SKScene时,我会创建一个SCNPlane并将材质设置为散布了SKScene的SCNMaterial。这就是我当前的代码(在我的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上时会暂停场景。因此,我在SKScene的self.isPaused = false
中添加了sceneDidLoad()
。这样可以运行update(_:)
函数,但是SCNPlane上的纹理从不更新,因此SKScene保持其初始外观。当SKScene在UIViewController中单独运行时,它可以正常工作。
有人知道我如何获得动画SKScene在SCNPlane上进行动画处理吗?归根结底,我只想让SKScene在ARKit中的平面(即桌子)上进行动画处理,因此任何其他方法都可以使用。
答案 0 :(得分:0)
Scenekit视图运行自己的渲染循环 并且不会更新/渲染未因动作或物理运动而移动的那些节点。
Scenekit自动决定何时更新/渲染节点,何时不更新。
尝试通过一些移动将连续SCNAction或CAAnimation应用于SCNPlane节点,并且漫反射属性动画应该起作用。