如何在 LUA 中实现枪械后坐力,2D?

我正在尝试创建一个枪械模拟器类型的移动应用程序,目前正在尝试编写一个开火函数。目前进展顺利,但我作为一个新手,我有困难解决我的问题:

function pistolRecoil()
transition.to(pistol, {time = 30, rotation = -20 })
end

function revPistolRecoil()
transition.to(pistol, {time = 50, rotation = 20 })
end

--开火
function tapFirePistol (event)
--显示火花
muzzleFlashP:toFront()
timer.performWithDelay(20, muzzleFlashPFunc())
pistolAmmo = pistolAmmo - 1
----时间
--声音(.wav),
audio.play(pFireSound)
--旋转
pistolRecoil()
print("1st", pistol.rotation)
pistolRecoil()
print("2nd", pistol.rotation)
revPistolRecoil()
----时间
if pistolAmmo <= 0 then fireButtonPistol:removeEventListener("tap",
tapFirePistol)
pistolAmmoCount.text = pistolAmmo
end
if pistolAmmo <= 0 then pistolAmmo = 0
pistolAmmoCount.text = pistolAmmo
end
pistolAmmoCount.text = pistolAmmo
end

fireButtonPistol:addEventListener("tap", tapFirePistol)

我遇到的问题是,枪械会反冲,但保持旋转,这很糟糕,因为我希望在短时间后它会“落下”,即使在枪械仍然旋转的情况下点击了开火按钮,它也不会再次反冲(我不介意)

非常感谢任何帮助。

点赞
用户6028368
用户6028368

所以,现在后坐力方面已经开始运作了,因为我现在正在使用 timer.performWithDelay。我发现 timer.performWithDelay 没有按照我预期的方式运作的原因是因为我在 performWithDelay 括号中使用了括号,这是不必要的,并且我还指定它只需执行一次。

timer.performWithDelay(20, revPistolRecoil, 1)

我仍然将 pistolRecoil 调用为一个函数。

另外,当我应用同样的更改时, muzzleFlashP 也开始运作了。

感谢您的帮助!

2018-03-05 14:35:47