0

インターネットで検索してみましたが、アンサーが見つかりませんでした。

最初のベクトルから見た 2 つのベクトル間の角度を計算しようとしています。

したがって、ベクトル 1 が 0,0 にあり、ベクトル 2 が 1,1 にある場合、見出しは 45 になります。

1.0 では 90 になります。

-1.0 では 270 になります。

これを作成する簡単な解決策はありますか?

4

5 に答える 5

1

私はそれをテストすることはできませんが、これはうまくいくはずです:

double getHeading(Vector2 a, Vector2 b)
{
    double x = b.x - a.x;
    double y = b.y - a.y;
    return Math.Atan2(y, x) * (180 / Math.PI);
}
于 2016-08-06T12:37:47.070 に答える
-2

ご回答ありがとうございます。手動で計算することにしました。私の後にこの質問を見つけた人のために、これが私がやった方法です:

double calculateHeading(Transform target){
    double newHeading = 0;

    Vector3 vectorToTarget = target.position - transform.position;
    double x = vectorToTarget.x;
    double y = vectorToTarget.y;

    if (x == 0 && y > 0) {
        newHeading = 0;
    } else if (x == 0 && y < 0) {
        newHeading = 180;
    } else if (x > 0 && y == 0) {
        newHeading = 90;
    } else if (x < 0 && y == 0) {
        newHeading = 270;
    } else if (y < 0) {
        newHeading = 180 + (Mathf.Rad2Deg * Mathf.Atan (vectorToTarget.x / vectorToTarget.y));
    } else if (y > 0) {
        newHeading = 360 + (Mathf.Rad2Deg * Mathf.Atan (vectorToTarget.x / vectorToTarget.y));
    }

    if (newHeading > 360) {
        newHeading -= 360;
    } else if (newHeading < 0) {
        newHeading += 360;
    }

    return newHeading;
}
于 2016-08-07T11:36:58.363 に答える