Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将SCNAction应用于SceneKit中具有约束的节点_Swift_Constraints_Scenekit - Fatal编程技术网

Swift 将SCNAction应用于SceneKit中具有约束的节点

Swift 将SCNAction应用于SceneKit中具有约束的节点,swift,constraints,scenekit,Swift,Constraints,Scenekit,我有一个有约束的节点;更具体地说,它有一个SCNLookAtConstraint: let constraint = SCNLookAtConstraint(target: scene.retriveNodeFromScene(cameraNodeName)) constraint.gimbalLockEnabled = false self.constraints = [constraint] 但当我想把节点移动到其他坐标系时,它就是不移动。我没有收到任何错误,只是什

我有一个有约束的节点;更具体地说,它有一个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)

您可以创建一个新的中间节点用于操作,并将当前节点作为具有注视约束的子节点。

与原始海报相同的问题。 我根据诺格斯的建议解决了这个问题

“LookAt”约束会打断/阻止在视图中发生这些动作。有趣的是,根据控制台,摄影机节点正在移动,只是在视图中没有更新。我还可以在视图中移动摄影机节点,将其更改为cameraNode.position=newPosition,但不使用漂亮的动画过渡


将cameraNode设置为emptyNode的父级。将lookAt约束指定给cameraNode,将moveTo约束指定给emptyNode。

是否可以将创建和添加操作的代码包括在内?已添加。但是没有错误。它可能会起作用,但我不知道这是否是最优雅的方式。