3

私は単純な Android タブレット ゲームを作成していて、一見単純な数学の問題で立ち往生しています。

指が触れている中心からの角度を生成するタッチパッドがあります。これは 0 度が 3 時の位置にあり、正常に機能していることに基づいています。

タッチポイント

指を 45 度に置いて、その角度で特定のポイントからオブジェクトを発射したいと考えています。アイテムは 150 ピクセルの範囲を移動できることがわかっています。私の数学の息子は私に式を教えてくれますが、0,0 が左下で、0,0 が左上であることに基づいて座標を計算すると思います。

彼の計算は次のとおりです。

xDirection = range(hypotenuse) * Math.cos(angle);
yDirection = range(hypotenuse) * Math.sin(angle);

ただし、この計算は非常に異常な結果を返します。角度が完全に 0 度の場合、計算は正しく、x 方向が 100 で範囲が 100 で、y 方向が 0 であることがわかります。角度が 90 度の場合、x 方向は -44、y 方向は 89 になります。

xDirection と yDirection は、弾丸がタッチ パッドの角度で範囲を満たすために移動する必要がある x 軸と y 軸上のピクセル数を表します。

これはおそらく他の人にとっては簡単な計算ですが、私は迷っています! どんな助けでも素晴らしいでしょう!

4

1 に答える 1

1

私は自分の問題を特定しました!

最も重要なことは、これを知らなかったのですが、Y 係数を逆にする必要があるということです。

また、Math.cos と Math.sin はラジアンを探しているため、Math.toDegrees(); から返されたリテラルの度数を入力していたため失敗しました。

したがって、数学をこれに変更した後:

xDirection = range(hypotenuse) * Math.cos(Math.toRadians(angle));
yDirection = -range(hypotenuse) * Math.sin(Math.toRadians(angle));

すべてが順調に出ています。一般的な数学では 0,0 が左下に置かれるため、y 座標が逆になっていることに注意してください。私たちの画面は、左上として 0,0 を調整します。

于 2012-11-20T09:04:55.263 に答える