创建一个继承类的InputAdapter
类,然后创建它的一个实例并注册它以监听触摸输入。
Gdx.input.setInputProcessor(inputAdapter);
有 3 种方法可以处理触摸事件touch_down
,您必须重写它们touch_dragged
。touch_up
在touch_down
中,检查触摸位置是否在鸟区。如果是,则使布尔标志为真。
在touch_dragged
中,检查上面的标志,如果为真,计算触摸位置相对于小鸟射击中心的距离和射击角度。
在touch_up
中,您可以通过调用以计算出的数量进行拍摄
body2shoot.applyLinearImpulse(impulse, body2shoot.getWorldCenter());
无需MouseJointDef
移动body2shoot
. 只需将body2shoot
触摸位置的变换设置为在每个渲染周期中拖动即可。
为了计算轨迹,我写了一个这样的类:
public class ProjectileEquation
{
public float gravity;
public Vector2 startVelocity = new Vector2();
public Vector2 startPoint = new Vector2();
public ProjectileEquation()
{ }
public float getX(float t)
{
return startVelocity.x*t + startPoint.x;
}
public float getY(float t)
{
return 0.5f*gravity*t*t + startVelocity.y*t + startPoint.y;
}
}
并且为了绘制它,我只设置了startPoint
andstartVelocity
然后在一个循环中我t
递增地给出一个(时间)并调用getX(t)
and getY(t)
。