InputAdapter
クラスを継承するクラスを作成し、インスタンスを作成して登録してタッチ入力を待ち受けます。
Gdx.input.setInputProcessor(inputAdapter);
あなたがオーバーライドする必要がタッチイベントtouch_down
、touch_dragged
とtouch_up
を処理するための3つの方法があります。
touch_down
には、鳥の領域にいるかどうかの接触位置を確認します。そうであれば、真偽フラグを真にする。
touch_dragged
では、上記のフラグをチェックし、それが真であれば、鳥の撮影センターに対する撮影位置と撮影角度の距離を計算します。
touch_up
では、body2shoot
を移動するMouseJointDef
への必要はありません
body2shoot.applyLinearImpulse(impulse, body2shoot.getWorldCenter());
を呼び出すことにより算出した金額で撮影注文することができます。レンダリングの各サイクルでドラッグされるように、タッチ位置に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;
}
}
を描画するために、それはちょうど私がして、ループ内で私がt
(時間)を得startPoint
とstartVelocity
を設定し、増分およびgetX(t)
を呼び出し、 getY(t)
。
大好きですが、うまくいくようです;) – user1320651
@Aliaaaトピックはかなり古くなっていますが、ボディに異なる質量などがあるため、体に適用したい衝動をどのように計算しますか?例は素晴らしいだろう! – george
@georgeこの式を発明したのではなく、重力の影響を受けたオブジェクトを動かすための物理学の基本式です。 x = v0 * t + x0;y = 0.5 * a * t^2 + v0 * t + x0; – Aliaaa