Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 如何验证玩家是否可以跳跃?_Lua_Box2d_Collision Detection_Love2d - Fatal编程技术网

Lua 如何验证玩家是否可以跳跃?

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 =

我正在使用lua with Löve2D framework和他附带的Box2D绑定开发一个小游戏,我试图验证玩家是否可以跳转,因此我使用了以下代码(不是全部代码,只是基本代码):


但我的问题是,检测是有点随机的,有时玩家可以在地面或某些物体上跳跃,有时他不能。如何修复它呢?

正如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