如何终止正在进行的 SCNTransaction?

How to terminate a SCNTransaction ongoing?

我使用 SCNTransaction 来移动游戏对象。更具体地说,当玩家点击屏幕上的某处时,对象将移向该目的地。但有时玩家可能会走错一步,所以我想创建一个可以终止所有 SCNTransactions 的按钮。

然而,与 SKAction 不同,SKAction 可以用简单的一行 - self.removeAllActions() 终止,根据 Apple Developer Documentation,SCNTransaction 不能从外部终止甚至暂停。更糟糕的是,我发现在物体到达目的地之前,它的位置已经改变到目的地的位置,所以我不能在知道物体当前位置后简单地使用另一个SCNTransaction来抵消正在进行的。

任何人都可以给我一些提示吗?非常感谢。

SCNTransaction及其动画原理遵循Core Animation和CATransaction之一。要停止动画,您必须将模型值设置为当前演示值。例如:

node.position = node.presentation.position

但是如果您熟悉 SKAction 并且想在您的 SceneKit 应用程序中实现相同的逻辑,您可能想看看 SCNAction。它们的工作原理相同。