Menu
CoddyTech

로컬 공간과 월드 공간

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

오브젝트에는 월드의 방향뿐만 아니라 자체 방향도 있습니다. transform.forward는 오브젝트의 앞부분이 향하는 방향(유니티 씬 뷰의 파란색 화살표)이며, 월드 기준으로 길이가 1인 벡터로 주어집니다. transform.right와 transform.up은 오브젝트 자체의 오른쪽과 위쪽 방향입니다. 오브젝트를 회전하면 이 방향들도 오브젝트와 함께 회전합니다. 이 종이비행기는 씬에서 y축을 중심으로 90도 회전되어 있으므로, 가리키는 방향대로 월드의 x축을 따라 날아갑니다.

public float speed = 4f;

void Update()
{
    transform.position += transform.forward * speed * Time.deltaTime;
}

transform.Translate(Vector3.forward * speed * Time.deltaTime)도 같은 동작을 합니다. Translate는 벡터를 오브젝트 자체 공간의 방향으로 해석하기 때문입니다. 이때 Vector3.forward는 오브젝트의 앞쪽을 의미합니다. 두 번째 인수로 Space.World를 전달하면 대신 월드의 축을 사용하므로, transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World)는 비행기가 어느 방향을 가리키든 월드의 z축을 따라 이동합니다.

transform.Rotate도 오브젝트 자체의 축을 중심으로 회전합니다. 위에서 보면, y축을 중심으로 한 양의 각도는 똑바로 선 오브젝트를 오른쪽으로 회전시키고 음의 각도는 왼쪽으로 회전시키며, 오브젝트의 transform.forward도 함께 회전합니다.

challenge icon

챌린지

쉬움

탱크에 탱크 조작을 추가하세요. 오른쪽 화살표를 누르면 y축을 중심으로 초당 turn도 회전하고, 왼쪽 화살표를 누르면 반대 방향으로 회전합니다. 위쪽 화살표를 누르면 탱크가 바라보는 방향으로 초당 speed단위만큼 전진합니다. 회전만으로는 탱크가 이동하지 않습니다.

Play를 누르고, 회전하고 전진한 다음 Check를 누르세요.

직접 해보기

using UnityEngine;

public class Tank : MonoBehaviour
{
    public float speed = 3f;
    public float turn = 90f;

    void Update()
    {
        // 오른쪽/왼쪽 화살표: y축을 중심으로 회전합니다. 위쪽 화살표: 탱크가 바라보는 방향으로 이동합니다.
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

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