2D 회전 소스

using UnityEngine;
using System.Collections;

public class Quadrangle : MonoBehaviour {

    enum E_ROTATION
    {
        E_CLOCKWISE = 0, //시계 방향.
        E_COUNTER_CLOCKWISE = 1, //반시계 방향.
    }

    float m_Speed = 10.0f;
    private RectTransform m_RT = null;
    private float m_Angle = 0.0f;
    E_ROTATION rotation_direction = E_ROTATION.E_CLOCKWISE;

    // Use this for initialization
    void Start () {
        if (m_RT == null)
            m_RT = this.GetComponent< RectTransform >();

        m_Angle = 0.0f;
    }

    // Update is called once per frame
    void Update () {

        if (rotation_direction == E_ROTATION.E_CLOCKWISE)
        {
            m_Angle = m_Angle + (m_Speed * Time.deltaTime);
            m_Angle = m_Angle > 360f ? 0 : m_Angle;
        }
        else
        {
            m_Angle = m_Angle - (m_Speed * Time.deltaTime);
            m_Angle = m_Angle < -360f ? 0 : m_Angle;
        }

        m_RT.rotation = Quaternion.AngleAxis(m_Angle, Vector3.forward);
        //Vector3(x, y, z)를 써야하지만.
        //Unity3D에서는 Vector3.forward, back, left, right, up, down을.
        //이용하여 더 쉽게 사용할 수 있음.
        //좌표설정시 Y가 위 / X가 오른쪽/ Z가 뒤.
    }
    public void OnSpeedUp()
    {
        m_Speed += 10.0f;
    }
    public void OnChangeDirection()
    {
        if (rotation_direction == E_ROTATION.E_CLOCKWISE)
            rotation_direction = E_ROTATION.E_COUNTER_CLOCKWISE;
        else
            rotation_direction = E_ROTATION.E_CLOCKWISE;
    }
}

코루틴을 사용해 Update() 가 아닌 곳에서 처리해보자… 회전 중심점을 변경 하고 싶을때는 Rect Transform 의 Pivot 의 y 좌표 값을 변경 해본다. (0~ 1 값 사이에서 변경)

댓글 없음: