2016-04-14 47 views
0

我一直在关注这个link的教程,用于在LIBGDX中实现触摸板。我想为使用触摸板的身体设置线速度。我试着按照本教程更新位置,但是身体并没有移动更平滑。在LIBGDX中使用触摸板设置线性速度

这是我建立的线性速度编码,

public void knobinput(float dt) 
{ 
if(touchpad.getKnobPercentX()>0) 
{ 
    gamehero.heroBody.setLinearVelocity(1.4f, 0); 
} 
else 
{ 
    gamehero.heroBody.setLinearVelocity(-1.4f, 0); 
} 
} 

当我实现这个逻辑,身体开始移动,虽然我没有通过触摸板提供任何投入。 当旋钮左右旋转时,我想要按照上面的代码设置线速度,但是,我不知道如何检查旋钮是向右还是向左旋转。请帮忙。提前致谢。

回答

2

你不处理这种情况时,触摸板是在它的零位 - 我的意思是你有停止体内有没有代码。看看这个片段:

else 
    { 
     gamehero.heroBody.setLinearVelocity(-1.4f, 0); 
    } 

即使你不移动触摸板身体有一些速度设置。

最好的办法是设置速度直接基于触摸板位置,而不象任何条件:

gamehero.heroBody.setLinearVelocity(SPEED * touchpad.getKnobPercentX(), 
             SPEED * touchpad.getKnobPercentY()); 

它将处理触摸垫的零位置(和体将具有(0,0)的速度它的速度将基于触摸板的位置值(也就是说,如果您移动触摸板,一个小小的身体会慢慢移动,如果您将触摸板移动到边缘,它将以最快的速度移动 - 也像它应该我猜)。

SPEED变量应该是您需要的最大速度。在这种情况下,您可以设置SPEED = 1.4f为例。

+0

非常感谢!它的工作@ m.antkowicz,你可以告诉是否使用这个“触摸板”对重力有影响?由于身体缓慢下落,需要更多时间才能到达地面。这个问题并没有出现,当我没有使用“触摸板” – Anusha

+0

是的 - 如果有其他力量正在修改身体的位置/速度,你应该通过使用当前身体的速度以某种方式处理它们。恐怕简单的'gamehero.heroBody.getLinearVelocity()。x + SPEED * touchpad.getKnobPercentX()'不会产生令人满意的效果 - 你必须尝试使用​​由于游戏特性造成的当前物体的速度 –

+0

给我一个如何改变重力的想法?我真的不知道,这个触摸板有更少的教程!帮助将是伟大的@ m.antkowicz – Anusha