这两个SpriteKit函数之间的区别是什么?

时间:2017-07-20 15:58:26

标签: swift sprite-kit

我不知道这两个功能之间的区别。

首先:

coin.run(SKAction.moveTo(y: -146.115, duration: 0))

第二

coin.position.y = -146.115

3 个答案:

答案 0 :(得分:4)

直到下一帧 - 直接在update之后才会处理SKAction。如果您在.run之后致电didEvaluateActions,您的位置将不会更新,并且您可能会遇到错误。

第二行代码将立即发生,无论您在SK循环中的位置如何。

示例,如果您正在使用物理,并在.run(.move(中的某些内容上调用didBegin(contact,然后期望该精灵已经被didEnd(contact)移动,那么您将遇到问题。在这种情况下,您需要手动调整.position而不是使用操作。

enter image description here

其次,.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

希望你明白了!