유니티 transform 컴포넌트는 게임 월드에서 오브젝트의 위치, 회전, 스케일을 제어하는 역할을 담당합니다. 이 글에서는 트랜스폼 컴포넌트의 기능에 대해 살펴 보겠습니다.
트랜스폼 컴포넌트란?
트랜스폼 컴포넌트는 게임 월드에서 오브젝트의 위치, 방향, 스케일(position, rotation, scale)을 정의하는 데이터 구조입니다. 이를 위해 위치, 회전, 스케일이라는 세 가지 프로퍼티를 갖추고 있습니다. 트랜스폼 프로퍼티는 코드를 이용하거나 에디터를 통해 게임 월드에서 오브젝트를 이동, 회전시키거나, 스케일을 조정할 할 때 사용할 수 있습니다.
위치 (position)
유니티 에서 게임 월드는 월드 스페이스라고 하며, 오브젝트의 로컬 스페이스는 부모 오브젝트에 상대적인 개념입니다. 트랜스폼 컴포넌트의 위치(position) 프로퍼티는 월드 스페이스에서 오브젝트의 위치를 정의합니다. 따라서 transform.position 프로퍼티의 값을 변경하여 게임 오브젝트의 위치를 변경할 수 있습니다.
회전 (rotation)
유니티 에서 회전은 오일러 각도 또는 쿼터니언으로 표현됩니다. 트랜스폼 컴포넌트의 회전 프로퍼티는 게임 월드에서 오브젝트의 방향을 정의하기 위한 목적으로 사용합니다. 즉, transform.rotation 프로퍼티의 값을 변경함으로써 게임 오브젝트를 자유롭게 회전시킬 수 있습니다.
스케일 (scale)
유니티 transform 컴포넌트의 스케일 프로퍼티는 게임 월드에서 오브젝트의 크기를 정의하기 위한 목적으로 사용합니다. 즉 transform.scale 프로퍼티 값을 증가시키거나 감소시킴으로서 게임 오브젝트의 크기를 자유롭게 변경할 수 있습니다.
부모-자식 관계
유니티에서 오브젝트는 transform 컴포넌트를 사용하여 부모 자식관계라는 계층 구조로 구성할 수 있습니다. 부모 오브젝트의 transform 컴포넌트는 자식 오브젝트의 트랜스폼 컴포넌트에 영향을 미칩니다. 다시 말해, 부모를 이동시키면 자식도 따라 이동하고, 부모를 회전시키면 자식도 함께 회전합니다. 스케일 변경의 경우도 마찬가지입니다.
코드를 이용한 유니티 transform 제어 사례
다음과 같이 유니티 C# 코드를 이용하여 게임 오브젝트의 transform 의 값을 직접적으로 변경할 수 있습니다.
using UnityEngine;
public class MoveObject : MonoBehaviour
{
public float speed = 10.0f;
void Update()
{
transform.position += transform.forward * speed * Time.deltaTime;
}
}
이 코드 예제에서 Update() 메서드는 오브젝트가 향하는 방향(순방향 벡터로 정의됨)으로 오브젝트를 초당 10 단위(예: 미터) 속도로 앞으로 이동합니다.
더 공부할 자료 - 개발 능력 다양화를 위한 학습의 필요성
유니티 엔진의 대안으로서, 인디 개발자들에게 선풍적인 인기를 끌고 있는 엔진이 바로 고도 엔진입니다. 혹시 고도 엔진을 배워 보려고 하신다면, 다음의 온라인 강의를 체크해 보시기 바랍니다.