我想根据用户的触摸位置为手榴弹增加力量。
--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位置越多,力就越小。但是这里的力量太大了,以至于手榴弹在空中升起。
答案 0 :(得分:0)
您必须校准施加的力。记住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,直到响应符合您的要求。您可能会发现线性(即常数系数)并不能提供您想要的效果,例如,对于小y,coef = 0.01可能没问题,但对于大y,您可能会发现coef = 0.001效果更好。在这种情况下,您必须使coef成为event.y的函数,例如
local coef = event.y < 100 and 0.001 or 0.01
您还可以增加显示对象的质量,而不是使用coeff。
回想一下,顶级角是0,0:顶级角的力是0,0。因此,如果您希望在屏幕上显示强制增加,则需要使用display.contentHeight - event.x
。