Defold中切换行走动画时同步设置游标以保持动画进度
解决方法
在Defold里,你不用分开处理动画切换和游标设置——play_animation消息本身支持在参数里指定cursor,这样就能在切换动画的同时保留当前帧位置,不会让动画从头播放。
把你的代码改成这样就行:
-- 先拿到当前精灵的游标位置 local current_cursor = go.get("#sprite", "cursor") -- 播放目标动画时直接传入游标参数 msg.post('#sprite', 'play_animation', { id = hash('run_5'), cursor = current_cursor })
要是你用的Defold版本比较新,也可以用更简洁的sprite.play_flipbook API,效果完全一致:
local current_cursor = go.get("#sprite", "cursor") sprite.play_flipbook("#sprite", hash('run_5'), { cursor = current_cursor })
之前的问题出在msg.post是异步操作:你先设置游标,后续执行的动画播放指令会把游标重置为0,导致设置无效。现在把游标参数直接塞进动画播放的消息里,就能让新动画从你想要的帧开始,完美实现“只旋转不重启动画”的效果。
额外提醒:
- 必须保证8个等距行走动画的帧数完全相同,不然游标对应的帧在新动画里会出现错位
- 如果角色切换方向时处于静止状态,记得切换到对应方向的 idle 动画,同样用这个方法保留游标
内容的提问来源于stack exchange,提问作者hypnomaki
相关产品推荐
相关产品推荐

