공부/Unity
[Unity] 코루틴, Lerp로 부드럽게 이동, 회전, 확대 및 축소하기
굴러다니다니
2023. 9. 22. 11:24
IEnumerator UsingLerp(Transform obj, Vector3 destPos, Vector3 destRot, Vector3 destScale)
{
WaitForSeconds wtf = new WaitForSeconds(Time.deltaTime / 2);
float pastTime = 0f, destTime = 1f;
Vector3 originPos = obj.localPosition;
Vector3 originRot = obj.localEulerAngles;
Vector3 originScale = obj.localScale;
while (pastTime < destTime)
{
obj.localPosition = Vector3.Lerp(originPos, destPos, pastTime / destTime);
obj.localEulerAngles = Vector3.Lerp(originRot, destRot, pastTime / destTime);
obj.localScale = Vector3.Lerp(originScale, destScale, pastTime / destTime);
pastTime += Time.deltaTime / 2;
yield return wtf;
}
obj.localPosition = destPos;
obj.localEulerAngles = destRot;
obj.localScale = destScale;
}
gamemanager를 싱글톤 선언해 어디서든 접근 가능하게 만든 뒤,
gamemanager의 usingLerp 코루틴에 이동하고자 하는 오브젝트의 transform, 목표 장소, 목표 회전값, 목표 scale값을 정해두었다.
728x90
반응형