[Unity] 오브젝트 왔다 갔다 하게 만들기

Learning 

When: 1학년 5월 11일

 

How:

학교 숙제로 Udemy 강좌를 보다가 오브젝트가 왔다 갔다 하게 만드는 효율적인 방법을 배웠습니다. 저는 코루틴으로 하고 있었는데 더욱 쉬운 방법이 있었습니다.

 

Understanding:

Mathf.PingPong() 메서드를 사용하여 첫 번째 매개변수에 값이 계속 변하는 수를 넣고, 두 번째 매개변수에 값이 0부터 몇까지 커질 수 있는지 설정한 다음 그것을 변수에 대입하면 0부터 N까지, N부터 0까지 계속 값이 바뀌는 변수를 만들 수 있습니다. 첫 번째 매개변수에는 Time.time을 넣고 speed를 곱하면 값이 변하는 속도를 조정할 수 있습니다. 그리고 Vector3.Lerp라는 선형 보간 메서드를 사용하면 첫 번째 매개변수부터 두 번째 매개변수까지의 값을 1로 정했을 때, 세 번째 매개변수에 있는 값에 해당하는 거리를 구할 수 있습니다.

moveMent = Mathf.PingPong(Time.time * speed, 1f);
transform.position = Vector3.Lerp(startPosition, endPosition, moveMent);

즉 이렇게 하면 startPosition부터 endPosition까지의 거리를 0부터 1로 정하고, 0부터 1 사이인 값인 moveMent의 값에 따라 transform.position을 바꿀 수 있는 것입니다.

 

Result: Mathf.PingPong() (값이 한도치 넘으면 넘은 만큼 다시 빼고, 0이 되면 다시 더하는 방식)와 Vector3.Lerp() (거리를 1로 정했을 때 세 번째 값에 해당하는 위치)를 사용해서 하시면 됩니다.