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로 정했을 때 세 번째 값에 해당하는 위치)를 사용해서 하시면 됩니다.
'UnityEngine' 카테고리의 다른 글
| [Unity] 오디오 사용하기 (0) | 2025.06.03 |
|---|---|
| [Unity] OnMouse 메서드와 UI에 쓰이는 메서드의 종류 (0) | 2025.06.01 |
| [Unity] 파티클 두번 보이는 버그, 파티클 투명도(Alpha) 조절 (0) | 2025.05.10 |
| [Unity] 유니티 코드에서 참조 타입과 값 타입 (0) | 2025.05.10 |
| [Unity] TextMeshPro vs TextMeshProGUI (0) | 2025.05.08 |