【Unity】Mathf.Sin、Mathf.Cosで任意の位置から円運動させる

Unity

最初にこちらのサイト様を参考にさせていただきました。
最初にサイト様を見てから見てほしいですお願いします(食い気味)。

301
【Unity】Sin関数の使い方 - Qiita
概要 高校生の時は「三角関数とか何の役に立つんですか~?」側の生徒でした。 後になって学びなおして苦労しました。sin cosをちゃんと理解するには「回る」という事は具体的にどういう事なのか?とか、三角比が成り立つのは何故なのか...

少しだけ参考程度にコードを載せます。

Vector2 senterPos;
Vector2 rotationPos;
float startTime;

void Start()
    {
        senterPos = transform.position; //円移動する中心の位置を決めます。  
    }

void Update()
    {
        startTime = Time.time + 0.5f//ここが重要、初期位置(初期秒数)の選択
; 
        float T = 1.0f;
        float f = 1.0f / T;
        rotationPos = senterPos;
        rotationPos.x += Mathf.Sin(2 * Mathf.PI * f * startTime);
        rotationPos.y += Mathf.Cos(2 * Mathf.PI * f * startTime);
        transform.position = rotationPos;
    }

Mathf.SinメソッドとMathf.Cosメソッドは1〜-1の値を返します。
殆ど上のサイト様の改変ですが、要するに2つ目のサイト様で〇秒間(何秒かは選択可能)で1度回るようになっているので、Timeに最初に任意の位置になるように値を足したり引いてしまおうという事です。

書いている途中で頭がごっちゃになってきてしまいました。
今回は1秒で一周を例にしましたが、例えば10秒で1週するというようにした場合、0.1秒が経過した時点でスタートすれば36°から始まります。
2.5秒が経過した時点でスタートすれば90°から始まります。

コメント

タイトルとURLをコピーしました