본문 바로가기

유니티/유니티 엔진

[유니티] 자연스러운 좌표이동 (Vector2.Lerp)

728x90
반응형

 부자연스러운 좌표이동

 

오브젝트의 좌표를 이동시킬 때 transform.position = new Vector2(,,) 의 형태를 사용하게 되면 오브젝트가 마치

순간이동한 것처럼 보일 것이다.

 

이 때 매끄러운 오브젝트의 좌표이동을 위해 선형보간함수를 사용할 수 있다.

 

 

 

 

 

 

 

 

 

선형보간함수 

 

선형보간함수는 Vector2.Lerp(a, b, c) 라는 형태를 취하고 있다.

 

이 함수는 3개의 매개변수를 요구하는데 a는 현재 좌표, b는 이동할 좌표, c는 상수이다.

 

c값에 따라서 반환하는 좌표가 달라지는데 c 값이 1이면 b를 반환하고 c가 0이면 a를 반환한다.

 

예를 들어 다음과 같은 코드가 있다고 하자.

 

Vector2.Lerp(new Vector2(0, 0), new Vector2(1, 1), 0.5);

 

 

이렇게 되면 Vector2.Lerp는 Vector2(0.5, 0.5)를 반환한다.

 

 

 

 

 

 

 

 

 자연스러운 좌표이동

 

위에서 설명한 Vector2.Lerp 함수에 c값을 아주 작은 값으로 부여하면 오브젝트의 좌표가 아주 조금 변하게 된다.

 

Vector2.Lerp를 Void Update에서 호출하여 c값을 Time.deltaTime으로 설정하면 좌표가 자연스럽게 움직이는 것을 볼 수 있다.

 

void Update()
{
	taransform.position = Vector2.Lerp(transform.position, new Vector2(5,5), Time.deltaTime);
}

 

위와 같이 코드를 작성하면 오브젝트가 좌표 (5, 5) 를 향해서 천천히 움직이는 것처럼 보인다.

 

 

 

 

 

 

 

728x90
반응형