这里有点绝望。我正试图在Corona SDK中制作一个亚军游戏,但是我无法从跳跃动画转换到跑步(跳回后)。
local function touched(event)
if(event.phase == "began")then
char.accel = monster.accel + 20
char:prepare("jumping")
char:play()
else
char:prepare("running")
char:play()
end
end
在此代码中,如果玩家持续触摸屏幕,跳跃动画一直在地面重复,是否有办法及时限制触摸事件?
还试图通过另一种结构实现动画:
if(onGround) then
if(wasOnGround) then
else
monster:prepare("running")
monster:play()
end
else
monster:prepare("jumping")
monster:play()
end
但跳跃动画由于某种原因只显示第一帧。
任何帮助都会非常感激! 提前谢谢。
答案 0 :(得分:2)
这里有两个可行的选择;
1)如果跳跃总是需要花费相同的时间,你可以使用计时器来防止用户再次跳跃,直到你知道它们会落地为止。 (计时器可以更改变量,甚至删除并重新添加事件监听器,这两种方法都可以。)
或者
2)类似于你上面所做的 - 在播放器上添加一个碰撞监听器,这样当它碰到地面时,一个标志,例如,player.canJump被设置为true,并且只要将它设置为false你开始跳跃动画。当角色再次击中地面时再将其设置为true并再次播放正在运行的动画。