我不知道这两个函数有什么区别。
首先:
coin.run(SKAction.moveTo(y: -146.115, duration: 0))
第二个:
coin.position.y = -146.115
最佳答案
SKAction 直到下一帧才会被处理——紧接在 update
之后。如果您在 didEvaluateActions
之后调用 .run
,您的位置将不会更新,并且您可能会因此遇到错误。
第二行代码将立即执行,无论您在 SK 循环中的位置如何。
例如,如果您正在使用物理学,并在 didBegin(contact
) 中调用 .run(.move(
,然后期望该 Sprite 已经移动通过didEnd(contact)
,那么你就会遇到问题。在那种情况下,你想手动调整.position
而不是使用action。
其次,.run
命令的性能也较差,因为它需要初始化 SKAction 对象,这比手动调整位置慢 20-30%。
诚然,这种差异加起来并不多,但在复杂的场景中,这可能是在 16 毫秒 (60fps) 内完成所有操作之间的差异。
第三,正如其他人所提到的,有一个 forDuration
参数,它允许您在一段时间内为移动设置动画。例如,2 秒,或者您想要的任何时间。
关于swift - 这两个 SpriteKit 函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45219790/