Menu
CoddyTech

로컬 공간과 월드 공간

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

오브젝트에는 월드의 방향뿐 아니라 오브젝트 자체의 방향도 있습니다. transform.forward는 오브젝트의 앞부분이 향하는 방향(Unity의 Scene 뷰에서 파란색 화살표)이며, 길이가 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

챌린지

쉬움

탱크에 탱크식 조작을 적용하세요: 제자리에서 회전하고, 바라보는 방향으로 주행합니다.

  1. Update()에서 오른쪽 화살표를 누르고 있는 동안 transform.Rotate(0, turn * Time.deltaTime, 0);을 실행하고, 왼쪽 화살표에는 -turn을 사용하세요.
  2. 위쪽 화살표를 누르고 있는 동안 transform.Translate(Vector3.forward * speed * Time.deltaTime);을 실행하세요.

‘플레이’를 누르고 회전하고 주행해 보세요. 탱크가 포신이 향하는 방향으로 이동합니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

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

    void Update()
    {
        // 오른쪽/왼쪽 방향키: y축을 중심으로 회전합니다. 위쪽 방향키: 탱크가 바라보는 방향으로 이동합니다.
    }
}

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

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