공부/Unity

[Unity] 코루틴, Lerp로 부드럽게 이동, 회전, 확대 및 축소하기

굴러다니다니 2023. 9. 22. 11:24
728x90
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