2

プレーヤーの x ピクセルと y ピクセルをポイントからポイントへと同じ方向に移動できる必要があります。説明するのは難しいですが、これは私がやろうとしていることです:

ここに画像の説明を入力

角度 1 と 2 は同じでなければなりません。ポイント 1 は (100, 100) で同じままですが、ポイント 2 は常に変化するため、角度も変化しなければなりません。私はこれを試しました:

moveRectangle.setX(touchEvent.getX());
moveRectangle.setY(touchEvent.getY());
float theta = (float) Math.toDegrees(Math.atan2(touchEvent.getY() - 100,touchEvent.getY() - 100));
float velX = (float) (getSpeed() * Math.cos(theta));
float velY = (float) (getSpeed() * Math.sin(theta));
player.move(velX, velY);

上記のコードは、ユーザーが moveRectangle (ポイント 2) に指を置いて移動すると、常に実行されます。しかし、上記のコードは機能しません。プレーヤーは、2 つの方向のいずれかに移動するだけです。player.move は velX と velY の速度を追加するだけです。では、どうすれば 2 つの角度を取得し、プレーヤーを正しい方向に動かすことができるでしょうか? ありがとう。

4

3 に答える 3

2

デカルト アプローチ (ベクトル) と極アプローチ (角度と大きさ) を使用してこの問題にアプローチする方が簡単でしょうか? したがって、プレーヤーが pointp0にあり、「指」が pointp1にある場合、プレーヤーが動くべき方向はvvector によって与えられp1-p0ます。次に、結果のベクトルvをプレーヤーの速度でスケーリングし、プレーヤーの速度を自分の位置に追加できます。これは、フレームごとに簡単に行うことができます。

于 2013-04-28T20:59:03.073 に答える