본문 바로가기

Unity3D/C#

유니티 2D 이미지 무한 평면 회전 (Rotate, eulerAngles)

반응형

Infinite

 

 

 

2D 이미지를 사용하다 보면 Transform 관련 기능들을 많이 사용하게 되는데 Position이나 Scale에 대한 기능을 사용하기도 하지만 회전 기능도 많이 사용합니다. 유니티 엔진이 게임 엔진이다 보니 x, y, z 축으로 모두 회전이 가능합니다. 그래서 2D 이미지인데 x 축이나 y 축으로 회전시켜서, 다소 부자연스러울 수 있으나 공간감을 주는 효과를 만들기도 합니다. 기본적으로 2D 공간에서 2D 이미지를 회전 시키려면 게임 오브젝트의 z 축을 회전시키면 됩니다.  z 축을 회전시키면 보통 사람들이 원하는 2D 공간에서의 회전하는 느낌을 줄 수 있으며 아이템이 돌아가며 공격하는 느낌, 전체 배경이 회전하는 느낌, 장애물이 회전해서 이동을 방해하는 느낌, 등 다양하게 구현할 수 있습니다. 이번 예제에서는 화면 크기의 나선형 2D 이미지를 일정한 속도로 무한히 회전시킵니다. 무한하게 회전시키는 방법은 유니티의 Transform 기능 중에 일정한 방향으로 회전시키는 Rotate를 반복문에 넣고 사용하여, 2D 이미지를 회전시킬 수 있습니다.

 

 

C# (UNITY 3D)

 

 

 

화면 전체 크기의 나선형 2D 이미지가 z 축으로 -2 속도로 돌아가는 예시입니다. Get 버튼을 누르면 현재 회전 값 z를 반환합니다.

 

 

 

using UnityEngine.UI;

 

Button, Text를 사용하기 위해 UnityEngine.UI 사용

 

 

 

나선형 이미지 ▼

Rotation.png
0.09MB

 

 

각 변수에 맞는 컴포넌트 오브젝트 할당

 

 

 

    
    public Transform rotation_target;
    public Text text_rotation;
    public Button button_get;
    public Text text_get;

    private float speed = -2;
    private bool stop_rotate = false;

    void Start()
    {
        Init_UI();
        Init_Rotate(); 
    }

    private void Update()
    { 
        if (stop_rotate)
            return;
        Update_Rotate();
    }

    private void Init_Rotate()
    {
        rotation_target.eulerAngles = Vector3.zero;
        stop_rotate = false;
    }
    private void Init_UI()
    {
        button_get.onClick.RemoveAllListeners();
        button_get.onClick.AddListener(Get_Euler);
    }
    private void Update_Rotate()
    {
        rotation_target.Rotate(Vector3.forward * speed);
        text_rotation.text = ((int)rotation_target.eulerAngles.z).ToString();
    }

    private void Stop_Rotate()
    {
        stop_rotate = true;
    }

    public void Get_Euler()
    {
        string txt = string.Format("current eulerAngles z : {0}", (int)rotation_target.eulerAngles.z);
        text_get.text = txt;
        Debug.Log(txt);
    }

 

변수(variable)

rotation_target(Transform) : 회전 시킬 2D 이미지
text_rotation(Text) : 현재 회전 값 업데이트로 표시
button_get(Button) : 현재 회전 값을 반환시킬 때 사용하는 버튼
text_get(Text) : 현재 회전 값 

speed(float) : 회전 속도
stop_rotate(bool) : true 면 회전 일시 정지 

 

함수(function)

Init_Rotate : 회전 관련 데이터 초기화
Init_UI : 버튼 초기화 및 기능 할당
Update_Rotate : 무한 회전 (반복문에 있어야 함)
Stop_Rotate : 회전 정지
Get_Euler : 현재 회전 값 반환

 

 

 

Transform / 2D Rotate / Vector3.forward / eulerAngles.z / 2D 오브젝트 회전 / 나선형

 

 

 

반응형