SpriteKit - SKActions 或更新功能中的更新位置

SpriteKit - SKActions or updating positions in update function

我对 SpriteKit 还很陌生,玩了大约 4 个月 HTML5。使用 Mark Wihlberg's HTML5 youtube 游戏教程,我的程序总是不断更新玩家或物体的位置。

示例是否有帮助:

function run() {
    var loop = function() {
        window.requestAnimationFrame(loop, canvas);

        update(); //here I would add maybe 3 to a player's x pos and redraw in draw()
        draw();
    }
    window.requestAnimationFrame(loop, canvas);
}

但是在网上看各种 SpriteKit 教程,很多都使用 SKAction 在屏幕上移动节点。

我的问题是不断更新一个节点在SpriteKit中的位置是非正统的,还是不受欢迎的,我应该习惯使用动作,为什么?

不,它不是不受欢迎的,知道如何手动完成这些事情是件好事。如果它相当简单,有规律的移动,那么 SKAction 就可以了。对于更复杂的东西(和 SKActions 实际上可以变得复杂,精灵跟随路径和贝塞尔曲线等),使用 Update() 函数,迭代你的精灵(使用 enumerateChildNodesWithName 或类似的)并根据需要移动它们.

您可以组合 2 - 在 Update() 中移动精灵并使用 SKAction 为它们设置动画,反之亦然。

切记不要打电话给Update();游戏引擎每秒自动调用它 60 次。它经过了一段时间,因此您可以准确计算出自上次调用 Update() 以来已经过了多长时间(并不总是 1/60s)