3

私はあなたがマウスの方向に弾丸を発射するスプライトを持っているゲームを作っています。これまでのところ、1発で問題なく動作します。傾きを取得し、ベクトルを正規化するこのメソッドがあります。

    public static Vector2f getSimplifiedSlope(Vector2f v1, Vector2f v2) {
    Vector2f result = new Vector2f(v2.x - v1.x, v2.y - v1.y);
    float length = (float)Math.sqrt(result.x * result.x + result.y * result.y);

    return new Vector2f(result.x / length, result.y / length);
}

しかし、今私は「スプレッド」でいくつかの弾丸を発射するショットガンを作っています。私の計画は、基本勾配を取り、それを度に変換し、カップルを加算または減算して偏差を作成し、次に度を勾配に変換して、それを弾丸に渡すことです。

しかし、私はこれを行う方法がわかりません。誰かが2D勾配を度に、またはその逆に変換する方法を教えてくれたら素晴らしいと思います。

前もって感謝します!

4

3 に答える 3

4

最も簡単な方法は、三角法Math.atan2を使用して角度をラジアンで計算し、で度に変換しMath.toDegrees、調整を実行し、でラジアンに変換してからMath.toRadians、三角法Math.tanを使用してラジアン値を勾配に変換することです。tanメソッドから戻ってくる潜在的に無限の勾配に注意する必要があります。

これがクラスのJavadocです。Math

于 2013-02-13T17:26:16.790 に答える
0

を使用し、結果はではなくラジアンMath.atan2()であることを忘れないでください。

于 2013-02-13T17:24:08.840 に答える
0

Math.atan2()はこれを行い、結果をラジアンで表示します。

長方形座標(x、y)から極座標(r、theta)への変換から角度シータを返します。この方法では、-piからpiの範囲でy / xのアークタンジェントを計算することにより、位相シータを計算します。

Math.toDegrees()は、ラジアン/度の変換を実行します。

于 2013-02-13T17:24:58.540 に答える