Lua 使用函数物理时用力过大;

Lua 使用函数物理时用力过大;,lua,coronasdk,game-physics,Lua,Coronasdk,Game Physics,我想根据用户的触摸位置为手榴弹添加力量 --this is the code physics.addBody(grenade1,"dynamic",{density=1,friction=.9,bounce=0}) grenade1:applyForce(event.x,event.y,grenade1.x,grenade1.y) 此处x和y位置越多,力越小。但是这里的力太大了,手榴弹无法飞到空中。你必须校准施加的力。记住F=ma,如果x=250,那么F=250,如果显示对象的质量(在添

我想根据用户的触摸位置为手榴弹添加力量

--this is the code   
physics.addBody(grenade1,"dynamic",{density=1,friction=.9,bounce=0})
grenade1:applyForce(event.x,event.y,grenade1.x,grenade1.y)

此处x和y位置越多,力越小。但是这里的力太大了,手榴弹无法飞到空中。

你必须校准施加的力。记住F=ma,如果x=250,那么F=250,如果显示对象的质量(在添加实体时设置,基于材质密度*对象面积)为1,那么加速度a=250,这非常大。因此,请尝试:

local coef = 0.001
grenade1:applyForce(coef*event.x, coef*event.y, grenade1.x, grenade1.y)
看看你能得到什么。如果太小,增加coef,直到响应符合您的要求。您可能会发现,线性(即常数coef)并没有提供您想要的效果,例如,coef=0.01可能适合小y,但对于大y,您可能会发现coef=0.001效果更好。例如,在这种情况下,您必须使coef成为event.y的函数

local coef = event.y < 100 and 0.001 or 0.01
local coef=event.y<100和0.001或0.01
也可以增加显示对象的质量,而不是使用系数


还记得顶层角点是0,0:顶层角点中的力将是0,0。因此,如果您希望在屏幕上显示时力增加,则需要使用
display.contentHeight-event.x

现在还不清楚你想做什么:“根据用户的触摸位置”。你们想施加一个恒定的力,不管物体在世界上的位置如何,但是你想在用户触摸物体的地方施加力吗?我想在用户触摸屏幕时施加力,根据x和y位置计算力,即,如果x位置为200,y位置为250,则根据该位置存在力。