0

私はAndroid用のゲームを作ることを学ぼうとしています。画像を斜辺線に沿って動かそうとしています。

私は数学とコードを取得しました(私はそれをグーグルのどこかから取得したと思います)が、画像が行の終わりに来ると、それが行を下った後(それはうまくいくように見えます)、何が起こるかです宛先ポイントのすぐ隣の2ポイント間で「バウンス」します。行の終わりに到達できないように、到達できる最も近い2つのポイントに移動し、それらの間を前後にジャンプします。

質問:2つのポイントからジャンプせず、斜辺線の端のポイントに固執しないようにするにはどうすればよいですか?

これが私のコードです:

// to find the distance between the 2 points 
distX = endX - imaX;
distY = endY - imaY;
// find the hypotenuse
hyp = Math.sqrt(distX*distX + distY*distY);
// don't know what this is for 
len = 160/hyp;
distX *= len;
distY *= len;

// and to move the image. The points have to be an int.
imaX += (int) (distX * 0.05); 
imaY += (int) (distY * 0.05);

ありがとう:)編集:質問を追加し、ここで作成したエラーを修正しました。

4

1 に答える 1

0

このコードをググった場合は、引き続きググってください。あなたがしたいのがラインを移動することだけなら、それは混乱を招くやり過ぎです。

両方の次元でちょうど 1 ピクセル離れている場合を考えてみましょう。

distX = 1
distY = 1
hyp = sqrt(2) ~1.414
len = 160/hyp ~ 113.15

imaX += (113.15 * 0.05) ~ 5
imaY += (113.15 * 0.05) ~ 5

したがって、X/Y 次元の両方で 1 ピクセル離れている場合、毎回各方向に 5 ピクセルずつ移動しようとします。良くない

また、このコードでは処理できないフレームレートの非依存性を達成するように努める必要があります。ウェブ上には、これに関する文字通りたくさんの記事があります。

編集:ああ、それは次のようになるはずです:

hyp = Math.sqrt(distX*distX + distY*distY);

乗算と加算を混同しました。

于 2013-02-11T00:14:34.877 に答える