Unity TransForm

유니티 변환(Transform)

유니티에서 Transform 컴포넌트는 객체의 위치(Position), 회전(Rotation), 크기(Scale)를 관리하는 가장 기본적이고 중요한 컴포넌트입니다. 유니티의 모든 게임 오브젝트는 Transform 컴포넌트를 가지고 있으며, 이를 통해 게임 오브젝트의 공간적 속성을 제어할 수 있습니다.


위치(Position)

위치는 게임 오브젝트가 월드 또는 로컬 좌표계에서 어느 위치에 있는지를 나타냅니다. 위치는 Vector3로 표현되며, 각 축(x, y, z)에 대한 값을 가집니다.

// 예제: 위치 설정
transform.position = new Vector3(10, 0, 5);

// 예제: 위치 이동
transform.position += new Vector3(1, 0, 0);

회전(Rotation)

회전은 게임 오브젝트가 월드 또는 로컬 좌표계에서 어떤 방향으로 회전되어 있는지를 나타냅니다. 회전은 Quaternion을 사용하여 표현됩니다.

// 예제: 회전 설정
transform.rotation = Quaternion.Euler(0, 90, 0);

// 예제: 회전 추가
transform.Rotate(new Vector3(0, 10, 0));

크기(Scale)

크기는 게임 오브젝트의 크기를 나타내며, Vector3로 표현됩니다. 각 축에 대한 크기를 독립적으로 설정할 수 있습니다.

// 예제: 크기 설정
transform.localScale = new Vector3(2, 2, 2);

// 예제: 크기 변경
transform.localScale *= 1.1f;

부모-자식 관계(Parent-Child Relationship)

Transform 컴포넌트는 부모-자식 관계를 통해 계층 구조를 형성할 수 있습니다. 부모의 변환이 자식에게 영향을 미치게 됩니다.

// 예제: 부모 설정
transform.parent = parentTransform;

// 예제: 자식 추가
childTransform.parent = transform;

// 예제: 부모에서 분리
childTransform.parent = null;

관련 함수들(Related Functions)

유니티 Transform 컴포넌트는 다양한 함수들을 제공하여 게임 오브젝트의 변환을 쉽게 조작할 수 있게 합니다.

  • Transform.Translate(Vector3 translation): 객체를 주어진 벡터만큼 이동시킵니다.
  // 예제: 객체 이동
  transform.Translate(new Vector3(1, 0, 0));
  • Transform.Rotate(Vector3 eulerAngles): 객체를 주어진 각도로 회전시킵니다.
  // 예제: 객체 회전
  transform.Rotate(new Vector3(0, 30, 0));
  • Transform.LookAt(Transform target): 객체가 특정 목표를 바라보게 합니다.
  // 예제: 특정 목표 바라보기
  transform.LookAt(targetTransform);
  • Transform.Find(string name): 이름으로 자식 객체를 찾습니다.
  // 예제: 자식 객체 찾기
  Transform child = transform.Find("ChildName");
  • Transform.GetChild(int index): 인덱스로 자식 객체를 반환합니다.
  // 예제: 자식 객체 가져오기
  Transform child = transform.GetChild(0);
  • Transform.DetachChildren(): 모든 자식 객체를 분리합니다.
  // 예제: 자식 객체 모두 분리
  transform.DetachChildren();
  • Transform.TransformDirection(Vector3 direction): 로컬 방향을 월드 방향으로 변환합니다.
  // 예제: 로컬 방향을 월드 방향으로 변환
  Vector3 worldDir = transform.TransformDirection(Vector3.forward);
  • Transform.InverseTransformDirection(Vector3 direction): 월드 방향을 로컬 방향으로 변환합니다.
  // 예제: 월드 방향을 로컬 방향으로 변환
  Vector3 localDir = transform.InverseTransformDirection(worldDir);

다양한 예제(Diverse Examples)

  • 객체를 앞으로 이동시키기
  void Update() {
      transform.Translate(Vector3.forward * Time.deltaTime);
  }
  • 객체를 지정된 목표로 회전시키기
  void Update() {
      if (targetTransform != null) {
          transform.LookAt(targetTransform);
      }
  }
  • 마우스 클릭 위치로 객체 이동시키기
  void Update() {
      if (Input.GetMouseButtonDown(0)) {
          Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
          RaycastHit hit;
          if (Physics.Raycast(ray, out hit)) {
              transform.position = hit.point;
          }
      }
  }
  • 일정 시간마다 객체 크기 변경하기
  IEnumerator Start() {
      while (true) {
          transform.localScale *= 1.1f;
          yield return new WaitForSeconds(1);
      }
  }

유니티의 Transform 컴포넌트는 게임 오브젝트의 위치, 회전, 크기와 관련된 모든 것을 다루며, 이를 통해 복잡한 움직임과 상호작용을 구현할 수 있습니다. 다양한 함수와 예제를 통해 유니티에서 게임 오브젝트를 효율적으로 제어할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *