我有一个有约束的节点;更具体地说,它有一个SCNLookAtConstraint:
let constraint = SCNLookAtConstraint(target: scene.retriveNodeFromScene(cameraNodeName))
constraint.gimbalLockEnabled = false
self.constraints = [constraint]
但是当我想将节点移动到其他坐标时,它就不会移动。我没有收到任何错误,只是没有任何反应。我做了一些测试,如果我删除约束,一切正常,节点移动没有问题。所以我该怎么做?有没有解决我的问题的方法,还是我应该找到另一种方式,相当于我的约束,但也兼容SCNAction?
行动代码:
let timeForAction = calculateTimerForSecoundAction()
let action = SCNAction.moveTo(calculateEndingLocation(), duration: timeForAction)
let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(NSEC_PER_SEC * timeForAction))
self.runAction(action)
explodeAfterReachingFinalPosition(timeForAction)
答案 0 :(得分:1)
您可以创建一个新的中间节点,将其用于该操作,并将当前节点作为具有lookAt约束的子节点。
答案 1 :(得分:1)
与原始海报相同的问题。 我用MNAUGES的建议解决了这个问题。
' LookAt'约束中断/阻止SCNAction在视图中发生。有趣的是,相机节点WAS移动 - 根据控制台 - 只是没有在视图中更新。我还可以在视图中移动摄像机节点,更改为cameraNode.position = newPosition - 但没有很好的动画过渡。
将您的cameraNode命名为emptyNode。将lookAt约束分配给cameraNode,将moveTo SCNAction分配给emptyNode。