[TIL-260117] Transform, 위치 이동 구현

데비·2026년 1월 17일

본과정

목록 보기
34/64

오늘 배운 내용

- Transform

- 위치 이동 구현


Transform

1. Position

  • 유니티에서 오브젝트의 위치 정보는 x, y, z 로 구성된 3축이 있다.
  • 유니티에서 Vector3 클래스를 통해 간편하게 다룰 수 있으며, 이를 사용해 게임 오브젝트의 위치 이동을 구현할 수 있다.
// Position을 직접적으로 변경하는 방법
Transform.position = new Vector3(x, y, z);

// Translate 함수를 이용한 축(x, y, z) 기준의 위치이동 방법
Transform.Translate(Direction * Speed);

// 선형 보간을 이횽해 거리에 따라 빠르게 이동하며 천천히 감속하는 방법
Transform.position = Vector3.Lerp(StartPosition, EndPosition, Interpolation);

// 목표지점을 향해 일정한 속도로 이동하는 방법
Transform.position = Vector3.MoveTowards(transform.position, Target.Position, Speed);

2. Rotation

  • 인스펙터의 Transform 컴포넌트에서는 회전값이 포지션과 동일하게 x, y, z축으로 보여지지만 내부 동작은 4원소를 사용하는 쿼터니언(Quaternion)을 통해 이뤄진다. (연산속도가 빠르고 3축을 사용했을 때의 짐벌락 현상을 방지하는데 효과적이다.)
  • 쿼터니언은 연산적으로 효과적이지만, 유니티 입문시점으로는 이해하기 복잡한 개념이다. 때문에 보다 직관적인 3축으로 컨트롤 가능한 Quaternion클래스의 오일러(Euler)를 사용한다.
// rotation에 값을 직접 지정해 회전하는 방법
Transform.rotation = Quaternion.Euler(x, y, z);

// Rotate 함수를 이용한 회전
Transform.Rotate(Vector3.up, Speed);

// RotateAround를 이용한 중심축 기준으로 회전
Transform.RotateAround

// LookAt을 이용한 대상을 향해 회전시키기
Transform.LookAt(Target.position);

3. Scale

  • 이름 그대로 게임 오브젝트의 크기를 비율로 지정하는 요소이다.
// Scale 조절
Transform.localScale = new Vector3(x, y, z);

// lossyScale은 부모 오브젝트의 스케일에 상관 없이 자신 고유의 Scale수치를 반환
Transform.lossyScale

위치 이동 구현

- 프레임 (Frame)

  • 기준이 되는 그래픽을 초당 몇 프레임 풀력하는가(FPS : Frame Per Second)
  • 프레임마다 연산을 수행하는데 프레임 출력수가 다르고, 메서드가 호출되는 횟수가 달라진다면 PC사양에 따라 오브젝트의 이동속도가 달라지거나 의도치 않은 판정이 나타나는 등의 문제가 생길수 있다.

- 델타 타임(Delta Time)

  • 1프레임의 갱신에 소요되는 시간
  • 1 / FPS = Delta Time
private void Move()
{
	float direction = Input.GetAxisRaw("Vertical")

	transform.Translate(Vector3.forward * direction * _moveSpeed * Time.deltaTime);
}

0개의 댓글