Unity/Unity Study

[Unity] 3D Surviver 팀 프로젝트 중, Player 사망처리 및 애니메이션

Jee-U 2025. 3. 25. 00:21

 

public interface IDamagable
{
    void TakePhysicalDamage(float damage);
}

IDamagable 인터페이스는 데미지를 처리하는 메서드를 제공하며 StatManager에 넣어 다양한 클래스에서 피격에 대해 구현할때 TakePhysicalDamage 메서드를 호출해줄수 있게된다.

이렇게 하면 IDamagable을 구현한 객체들이 일관된 방식으로 데미지 받는 방식을 처리할 수 있게 된다.

 

public class PlayerCondition : StatManager
{
    public void TakePhysicalDamage(float damage)
    {
        onTakeDamage?.Invoke();
        animator.SetTrigger("IsHit");
        Stop();
        curHealth -= damage;
        if (curHealth <= 0)
        {
            Die();
        }
        if(Hitdelay <= 0)
        {
            playerController.SlowSpeed();
        }
        AudioManager.Instance.PlayPlayerSound(Hit);
    }
    
    public void Die()
    {
        animator.SetBool("IsDie", true);
        uimanager.ToggleCursor();
        deathPanel.SetActive(true);
        TimerManager.instance.StopTimer();
        Destroy(gameObject, 5f);
    }
}

 

인터페이스를 활용한 데미지 피격방식을 처리했고 피격 시 효과음도 추가했다.

체력이 0이되면 사망하며 사망시엔 죽는 모션을 재생하고 커서가 나타나도록 설정했다. 또한 일정시간이 지나면 오브젝트를 파괴하고 사망후에 나타나는 장면을 위한 오브젝트(UI)가 활성화되도록 해주었다.

 

 

그런데..

원래 transition은 하나하나 선택해서 하나하나 작업해주었는데 근데 다같은 설정할거면 한꺼번에 해도 되는거 아닌가? 라는 생각으로 전부 선택하고 파라미터를 설정해주었다.

 

놀랍게도 임시저장 제목

 

심지어 나중에 알았는데 애니메이션도 사망모션이 아닌 다른거 가져다놓고 왜이러냐 그랬다..

결론은 하나하나 따로 설정해주었더니 완료, 이렇게 플레이어쪽은 마무리..!