Unity Vector3 보간법

agnusdei·2023년 10월 28일

유니티에서 오브젝트 이동하기: Vector3 및 보간 방법

Unity에서 오브젝트를 움직이기 위해 Vector3 클래스의 메서드들과 보간(interpolation) 기술들을 활용할 수 있습니다. 이들은 오브젝트를 부드럽게 이동시키는 방법으로 다양한 효과를 제공합니다.

Vector3란?

Vector3는 Unity에서 3차원 공간에서 위치를 나타내는 클래스입니다. Vector3MoveTowards, SmoothDamp, Lerp, Slerp 메서드를 사용하여 오브젝트를 움직일 수 있습니다.

1. Vector3.MoveTowards

이 메서드는 현재 위치에서 목표 지점으로 직선으로 이동합니다. 매개변수로는 현재 위치, 목표 위치, 이동 속도를 받습니다.

transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed * Time.deltaTime);

위의 코드는 transform.position이 현재 위치에서 targetPosition으로 speed 값에 따라 매 프레임마다 이동합니다.

2. Vector3.SmoothDamp

SmoothDamp는 현재 위치에서 목표 지점으로 가는 데 시간이 걸리는 부드러운 이동을 제공합니다. 이전 위치, 목표 위치, 이동 속도 등을 매개변수로 받습니다.

Vector3 velocity = Vector3.zero;
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);

SmoothDamp는 현재 위치에서 목표 위치로 smoothTime 시간동안 부드럽게 이동합니다. velocity는 내부적으로 사용되는 변수로, 오브젝트가 목표에 도달할 때까지 서서히 감속합니다.

3. 선형 및 구형 선형 보간

선형 보간 (Vector3.Lerp)

Lerp는 두 지점 사이의 선형 보간(interpolation)을 수행합니다. 현재 위치에서 목표 위치까지 선형적으로 이동하는 것을 의미합니다.

transform.position = Vector3.Lerp(transform.position, targetPosition, lerpValue);

lerpValue는 0에서 1 사이의 값이며, 0에 가까울수록 이동이 부드럽고 천천히 이동합니다.

구형 선형 보간 (Vector3.Slerp)

Slerp는 구 형태의 선형 보간을 수행합니다. 이것은 원주 위에서 오브젝트를 이동시키는 데 사용됩니다. 일반적으로 회전 용도로 많이 사용되지만, 이동에도 적용할 수 있습니다.

transform.position = Vector3.Slerp(transform.position, targetPosition, slerpValue);

slerpValue는 0에서 1 사이의 값이며, 0에 가까울수록 선형적으로, 1에 가까울수록 곡선적으로 이동합니다.

예시

위의 코드는 각 메서드의 사용법과 원리에 대한 간단한 설명입니다. 각각의 사용에 따라 오브젝트의 이동 방식이 다르며, 적절한 상황에 맞게 선택하여 사용할 수 있습니다. 정확한 동작을 확인하려면 Unity의 스크립트에서 실제로 테스트해보는 것이 중요합니다.

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글