クラスを継承するInputAdapterクラスを作成し、そのインスタンスを作成して登録し、タッチ入力をリッスンします。
Gdx.input.setInputProcessor(inputAdapter);
タッチ イベントを処理するには 3 つのメソッドがありtouch_down、touch_draggedオーバーライドtouch_upする必要があります。
でtouch_downタッチ位置が野鳥エリア内かどうかを確認します。そうであれば、ブールフラグを真にします。
でtouch_dragged、上記のフラグを確認し、true であれば、鳥の射撃中心と射撃角度に対するタッチ位置の距離を計算します。
では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;
}
}
それを描画するために、startPointandを設定startVelocityし、ループでt(時間)を段階的に指定して and を呼び出しgetX(t)ますgetY(t)。