Lua 如何验证玩家是否可以跳跃?
我正在使用lua with Löve2D framework和他附带的Box2D绑定开发一个小游戏,我试图验证玩家是否可以跳转,因此我使用了以下代码(不是全部代码,只是基本代码):Lua 如何验证玩家是否可以跳跃?,lua,box2d,collision-detection,love2d,Lua,Box2d,Collision Detection,Love2d,我正在使用lua with Löve2D framework和他附带的Box2D绑定开发一个小游戏,我试图验证玩家是否可以跳转,因此我使用了以下代码(不是全部代码,只是基本代码): 但我的问题是,检测是有点随机的,有时玩家可以在地面或某些物体上跳跃,有时他不能。如何修复它呢?正如Bartek所说,你不应该做y==0,因为y是一个浮点变量,它不太可能完全等于0,特别是在物理引擎中 使用如下所示的ε值: x,y = player.body:getLinearVelocity() epsilon =
但我的问题是,检测是有点随机的,有时玩家可以在地面或某些物体上跳跃,有时他不能。如何修复它呢?正如Bartek所说,你不应该做
y==0
,因为y
是一个浮点变量,它不太可能完全等于0,特别是在物理引擎中
使用如下所示的ε值:
x,y = player.body:getLinearVelocity()
epsilon = 0.5 -- Set this to a suitable value
if math.abs(y) < epsilon then cantJump = false else cantJump = true end
x,y=player.body:getLinearVelocity()
ε=0.5——将其设置为合适的值
如果math.abs(y)
这意味着“
cantJump=true
如果玩家的y
位置在0
的0.5
范围内”,当然,你需要进行实验,看看什么是好的ε值。我只是随意选择了0.5
不直接与0比较;使用ε。我想条件应该是相反的,即math.abs(y)
。你是对的。我刚刚意识到变量是cantJump
,而不是canJump
。我编辑了我的答案以反映这一点。
x,y = player.body:getLinearVelocity()
epsilon = 0.5 -- Set this to a suitable value
if math.abs(y) < epsilon then cantJump = false else cantJump = true end