在 LIBGDX 中使用触摸板为 body 设置线速度
Setting Linear Velocity for a body using TouchPad in LIBGDX
我一直在按照 link 中的教程在 LIBGDX 中实现触摸板。我想使用 touchpad 为 body 设置线速度。我尝试按照本教程更新位置,但 body 没有移动得更顺畅。
这是我设置线速度的代码,
public void knobinput(float dt)
{
if(touchpad.getKnobPercentX()>0)
{
gamehero.heroBody.setLinearVelocity(1.4f, 0);
}
else
{
gamehero.heroBody.setLinearVelocity(-1.4f, 0);
}
}
当我实现这个逻辑时,body 开始移动,尽管我没有通过触摸板提供任何输入。
当旋钮左右转动时,我想按照上面的代码设置线速度但是,我不知道如何检查旋钮是右转还是左转。请帮忙。提前致谢。
当触摸板处于零位置时,你没有处理这种情况 - 我的意思是你没有停止的代码body 那里。看看这个片段:
else
{
gamehero.heroBody.setLinearVelocity(-1.4f, 0);
}
即使您不移动触摸板 body 也设置了一些速度。
最好的方法是直接根据触摸板位置设置速度,无需任何条件,例如:
gamehero.heroBody.setLinearVelocity(SPEED * touchpad.getKnobPercentX(),
SPEED * touchpad.getKnobPercentY());
它将处理触摸板的 零位置 (并且 body 将按原样设置 (0, 0) 速度)并且它的速度将基于触摸板的位置值也是如此(这意味着如果你稍微移动触摸板 body 将缓慢移动,如果你将触摸板移动到边缘它将以最大速度移动 - 我猜也是如此)。
SPEED
变量应该是你需要的最大速度。在这种情况下,您可以设置 SPEED = 1.4f
例如。
我一直在按照 link 中的教程在 LIBGDX 中实现触摸板。我想使用 touchpad 为 body 设置线速度。我尝试按照本教程更新位置,但 body 没有移动得更顺畅。
这是我设置线速度的代码,
public void knobinput(float dt)
{
if(touchpad.getKnobPercentX()>0)
{
gamehero.heroBody.setLinearVelocity(1.4f, 0);
}
else
{
gamehero.heroBody.setLinearVelocity(-1.4f, 0);
}
}
当我实现这个逻辑时,body 开始移动,尽管我没有通过触摸板提供任何输入。 当旋钮左右转动时,我想按照上面的代码设置线速度但是,我不知道如何检查旋钮是右转还是左转。请帮忙。提前致谢。
当触摸板处于零位置时,你没有处理这种情况 - 我的意思是你没有停止的代码body 那里。看看这个片段:
else
{
gamehero.heroBody.setLinearVelocity(-1.4f, 0);
}
即使您不移动触摸板 body 也设置了一些速度。
最好的方法是直接根据触摸板位置设置速度,无需任何条件,例如:
gamehero.heroBody.setLinearVelocity(SPEED * touchpad.getKnobPercentX(),
SPEED * touchpad.getKnobPercentY());
它将处理触摸板的 零位置 (并且 body 将按原样设置 (0, 0) 速度)并且它的速度将基于触摸板的位置值也是如此(这意味着如果你稍微移动触摸板 body 将缓慢移动,如果你将触摸板移动到边缘它将以最大速度移动 - 我猜也是如此)。
SPEED
变量应该是你需要的最大速度。在这种情况下,您可以设置 SPEED = 1.4f
例如。