250507 TIL

박소희·2025년 5월 7일

Unity_7기

목록 보기
83/94

걷다가 멈춤(걷는 모션 포함되어있음), 뛰다가 멈춤(멈추는 모션만 있음) 애니메이션이 달라서 구분해줘야 하는게 좀 그렇다.

플레이어와 충돌하면 서서히 멈추도록 했다.

    private IEnumerator StopDelay(float delay, bool walk)
    {
        float speed = Agent.speed;
        float elapsed = 0f;
        float duration = 2f;

        //Stop Walking - 애니메이션 2초 후 멈춤
        if (walk)
        {
            while (elapsed < duration)
            {
                elapsed += Time.deltaTime;
                Agent.speed = Mathf.Lerp(speed, 0f, elapsed / duration);
                yield return null;
            }
        }
        else
        {
            Agent.speed = 0f; // 즉시 정지
        }


        isColliding = true;

        yield return new WaitForSeconds(walk ? delay : 1f);

        Agent.speed = prevAnimSpeed;
        isColliding = false;
        Agent.isStopped = false;
        Animator.SetBool("Trigger", false);

        if (walk) Animator.SetBool("Walk", true);
        else Animator.SetBool("Run", true);
    }

0개의 댓글