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)
我对 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)