我迅速创建了一个计时器,以每秒更新5次,因为我不需要更频繁地调用方法,如下所示:
slowRenderTimer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(slowRenderUpdate), userInfo: nil, repeats: true)
效果很好,但是在此循环中访问移动的物理物体的速度时,该值始终返回SCNVector3(0,0,0)。但是,在检查传统渲染器中的速度时,如下所示:
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
我可以检索节点的准确速度。
我通过在render循环中更新一个类变量并在慢速渲染中使用它来解决了这个问题,但是我想知道的是,为什么会发生这种情况?这是因为只有在调用循环时对象才在运动中,而不是在循环外部时才在运动吗?如果是这样,我的慢速渲染循环有时是否会同时被调用?我已经看过渲染周期图,但是我想看不到它们如何在渲染循环之外连接。谢谢。