我不知道这两个功能之间的区别。
首先:
coin.run(SKAction.moveTo(y: -146.115, duration: 0))
第二
coin.position.y = -146.115
答案 0 :(得分:4)
直到下一帧 - 直接在update
之后才会处理SKAction。如果您在.run
之后致电didEvaluateActions
,您的位置将不会更新,并且您可能会遇到错误。
第二行代码将立即发生,无论您在SK循环中的位置如何。
示例,如果您正在使用物理,并在.run(.move(
中的某些内容上调用didBegin(contact
,然后期望该精灵已经被didEnd(contact)
移动,那么您将遇到问题。在这种情况下,您需要手动调整.position
而不是使用操作。
其次,.run
命令的性能也较差,因为它需要初始化SKAction对象,这比仅手动调整位置要慢20-30%。
当然,这种差异并不是很大,但在复杂的场景中,它可能是以16ms(60fps)完成所有事情之间的区别。
第三,正如其他人所提到的那样,有forDuration
参数,它允许你在一段时间内动画运动。比方说,2秒,或者你想要多长时间。
答案 1 :(得分:2)
SKAction.moveTo()
有一个duration
参数,因为它是在指定时间间隔内更改节点位置的动画版本。另一方面,改变节点的位置并不会影响运动。
答案 2 :(得分:0)
在第一行中,您正在使用您的硬币类对象,并通过它的对象访问函数。
coin.run(SKAction.moveTo(y: -146.115, duration: 0))
在第二行硬币类对象中访问它的属性position.y
并为其指定浮点值。
coin.position.y = -146.115
希望你明白了!