Swift / IOS:SCNAction完成后,SCNNode似乎返回了其原始位置,但是其实际位置已由SCNAction更改

时间:2019-03-04 11:23:13

标签: ios swift scenekit scnaction

我对Swift和IOS开发非常陌生,所以这可能是一个简单的问题,但我很难在互联网上找到答案。

我试图通过在一个节点上运行SCNAction来为静态DAE模型制作动画。但是,在SCNAction完成(并且移动了节点)之后,节点位置似乎会立即回到其原始位置(加载静态DAE模型时的位置相同)。但是,当我打印节点的位置时,我注意到由于SCNAction而实际上改变了节点的位置。当我在同一节点上再次运行SCNAction时,该节点将返回到上一个SCNAction导致的结束位置,并从此处开始SCNAction。我想知道为什么节点的实际位置和场景中出现的位置之间不匹配。

另一个有趣的事情是,当我按顺序放置SCNActions([action1,action2])时,该节点将不会回到动作之间的原始位置。但是,如果在两者之间添加了SCNAction.wait([action1,SCNAction.wait,action2]),则节点将在等待期间返回其原始位置,并将从action1的结束位置再次开始action2。

我正在尝试在SCNActions的末尾保留所有节点的位置。有什么方法可以防止它回到原始位置吗?

不确定问题是否足够清楚。任何想法都值得赞赏。

1 个答案:

答案 0 :(得分:1)

您是否已验证节点不附带Collada文件中的动画?动画和动作是一个接一个地评估的。这些动作可能会覆盖动画效果,直到完成(或暂停)为止。

与动作不同,动画不会写在模型树(node.position)中,而不会写在演示树(node.presentationNode.position)中。