如何终止正在进行的 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
。它们的工作原理相同。
我使用 SCNTransaction 来移动游戏对象。更具体地说,当玩家点击屏幕上的某处时,对象将移向该目的地。但有时玩家可能会走错一步,所以我想创建一个可以终止所有 SCNTransactions 的按钮。
然而,与 SKAction 不同,SKAction 可以用简单的一行 - self.removeAllActions() 终止,根据 Apple Developer Documentation,SCNTransaction 不能从外部终止甚至暂停。更糟糕的是,我发现在物体到达目的地之前,它的位置已经改变到目的地的位置,所以我不能在知道物体当前位置后简单地使用另一个SCNTransaction来抵消正在进行的。
任何人都可以给我一些提示吗?非常感谢。
SCNTransaction
及其动画原理遵循Core Animation和CATransaction
之一。要停止动画,您必须将模型值设置为当前演示值。例如:
node.position = node.presentation.position
但是如果您熟悉 SKAction
并且想在您的 SceneKit 应用程序中实现相同的逻辑,您可能想看看 SCNAction
。它们的工作原理相同。