Unity3D/C#

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

잰드케이 2020. 10. 25. 11:08
반응형

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 오브젝트 회전 / 나선형

 

 

 

반응형