私は弾を投げる必要があるシンプルなゲームを開発しようとしています。 私はボールがタッチまたはスワイプの方向に従いたいと思います。Java Android onTouch Direction
しかし、私は解決に成功しなかったという小さな問題があります。
Iは、MotionEvent
のACTION_DOWN
上の座標を取り、MotionEvent
のACTION_UP
上の座標は、この直線に係るボールを移動させるために直線の式を計算します。
"上"または "前"または "正面"の近くの方向にスワイプすると、ボールはちらつきのスピードで移動し、反対方向(右または左)または対角線上では、ボールは通常の速度で移動する。
私の計算の欠陥はどこにありますか?
私が助けてください、私は結果から遠くないが、この問題を解決するためにあなたに必要です!
onTouch
方法:
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()) {
case(MotionEvent.ACTION_DOWN):
balle.setX(event.getX());
balle.setY(event.getY());
ya = event.getY();
xa = event.getX();
break;
case(MotionEvent.ACTION_UP):
xb = event.getX();
yb = event.getY();
balle.setMove(true);
break;
}
return true;
}
これは私のmoveDirection
方法であって、
public void moveDirection(float xa, float ya, float xb, float yb) {
if(!move) {
return;
}
else {
float m, b;
float dx = xb-xa;
m = (yb - ya)/(xb - xa);
b = ya - (m * xa);
if(dx > 0) {
this.x += speedX;
}
else {
this.x += -speedX;
}
this.y = (m * this.x + b);
}
}
は、事前にありがとうございます!
あなたが右または左に移動すると、どちらのイベントもディスパッチされないため、多少の相互作用(速度が遅くなる可能性があります)が失われている場合は、デフォルトオプションを追加してみてください。アンドロイドのゲームについてはほとんど分かりません:) –
どこにオプションを追加する必要がありますか? moveDirection関数またはonTouch関数では? –
onTouchでは、あなたは上下の動きをキャプチャしています。あなたのケースにデフォルトのオプションを追加すると、他のタッチイベントをキャプチャできます。 VelocityTrackerを追加してイベントの速度を決定することができます。私はコードを例として掲示します –