Menu
CoddyTech

매초 회전하기

Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 11번째.

transform.Rotate(x, y, z)는 GameObject의 각 축을 중심으로 지정된 각도만큼 회전시킵니다. Update()에서 호출하면 매 프레임 조금씩 회전하므로 오브젝트가 계속 회전합니다.

하지만 1초는 몇 프레임일까요? 빠른 컴퓨터에서는 120일 수도 있고, 휴대폰에서는 30일 수도 있습니다. 단순한 transform.Rotate(0, 0, 5)는 빠른 컴퓨터에서 네 배 더 빠르게 회전합니다. Unity의 해결책은 Time.deltaTime입니다. 이는 마지막 프레임 이후 경과한 초를 의미합니다. 속도에 이를 곱하면 어떤 기기에서든 속도가 초당 기준이 됩니다.

여기서는 바퀴가 z축을 중심으로 초당 45도 회전합니다.

public float speed = 45f;

void Update()
{
    transform.Rotate(0, 0, speed * Time.deltaTime);
}

초당 60프레임일 때 Time.deltaTime은 약 0.0167이므로 매 프레임 45 * 0.0167, 즉 약 0.75도 회전하며, 이를 60번 반복하면 45도가 됩니다. 초당 30프레임일 때는 매 프레임 두 배만큼 회전하지만, 그래도 1초 동안의 회전량은 45도가 됩니다.

challenge icon

챌린지

쉬움

큐브가 y축을 중심으로 초당 speed도만큼 회전하게 하세요.

  1. Update()에서 transform.Rotate(x, y, z)를 호출하세요.
  2. 가운데 숫자에는 y축을 위한 speed * Time.deltaTime을 넣고, x와 z에는 0을 넣으세요. 위의 바퀴는 z축을 중심으로 회전했고, 이 큐브는 y축을 중심으로 회전합니다.

‘플레이’를 누르세요. 큐브가 매초 1/4바퀴 회전합니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class Spinner : MonoBehaviour
{
    public float speed = 90f;

    void Update()
    {
        // 여기에서 큐브를 y축을 중심으로 회전시키세요
    }
}

Unity 스크립팅 기초의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드