HackerQuest

No app, no life

趣味と実益を兼ねてプログラマをやっている者👨‍💻

Unity 2D 円運動

Unity 2Dで円運動をする関数

まずはじめに,移動速度と円運動する半径を定義しておく

    public float  moveSpeed = 1.0f;

    public float circle_radius = 1.0f;

初めの位置を固定したい場合は以下も用意

    private Vector2 initPosition;

    void Start () {
        initPosition = transform.position;
    }

initPositionは初期位置

 

transform.positionを利用する場合について

 

       Vector2 pos = transform.position;

で自分の位置を取得する.

次に

        float rad = moveSpeed * Mathf.Rad2Deg * Time.time;

三角関数を使うためのラジアンを用意する.

そして

        pos.x = Mathf.Cos(rad) * circle_radius;

        pos.y = Mathf.Sin(rad) * circle_radius;

でX軸,Y軸に三角関数を利用した移動先を与える.

        transform.position = pos + initPosition;

最後にオブジェクトの位置を変更してあげればOK!

 

これを

    void Circle()
    {
        Vector2 pos = transform.position;

        float rad = moveSpeed * Mathf.Rad2Deg * Time.time;

        pos.x = Mathf.Cos(rad) * circle_radius;

        pos.y = Mathf.Sin(rad) * circle_radius;

        transform.position = pos;
    }

 

このような関数にしてあげて,Update()の中に入れてあげればOK!

 

Ryo Tsuzukihashi