유니티/유니티 공부

#2 플레이어 타격, 게임오버 기본 구현

DOlpa_ 2026. 2. 14. 00:00
728x90

이번엔 플레이어가 맞았을때 카메라 떨림현상을 추가해보도록 하겠다

당연히 시네머신으로 구현할 것이다!

 

 

 

우선 가상 카메라 컴포넌트에서 Add Extension을 선택해준다

거기서 CinemachineImpulseListner을 선택해주자. 그럼 컴포넌트가 하나 더 부착된다

그리고 카메라가 따라가고 있는 플레이어를 선택한뒤 플레이어에게 시네머신 임펄스 소스라는 컴포넌트를 붙여주자

 

여기서 Impulse Shape가 카메라가 떨리는 효과의 종류인데 난 무난하게 Bump를 선택해주었다

 

    private void TakeDamage()
    {
        if (isHurt) return;

        currentHealth -= 40f;
        Debug.Log("현재 체력: " + currentHealth);
        if (impulseSource != null)
        {
            // 괄호 안에 숫자를 넣으면 강도를 곱해서 조절할 수 있습니다. 예: GenerateImpulse(0.5f);
            impulseSource.GenerateImpulse();
        }

 

그리고 어느 타이밍에 떨림 현상을 줄건지 결정해야하기에

적절한 곳에 코드를 써넣어주면 된다

 

---------------------------------

 

이번엔 아주 간단하게 게임 오버 구현을 해보도록 하자

 

게임오버되는 규칙은 둘 중 하나

 

1. HP가 0 이하로 될때

2. 바닥으로 추락사 했을때

 

코드는 생략하겠다

 

    private void Die()
    {
        isDead = true;
        Debug.Log("죽음!");
        GameOverUI.SetActive(true);
        transform.DOKill(); 
    }
    public void Jump()
    {
        if (isDead) return;
        rb.velocity = new Vector2(rb.velocity.x, jumpForce);
    }

    public void Attack()
    {
        if (isDead) return;
        Debug.Log("공격!");
    }

 

우선 죽으면 점프와 공격버튼은 더이상 작동하지 않게 되고

GameOverUI라는 오브젝트를 활성화 한다

 

그리고 이게 바로 게임 오버 UI 오브젝트

 

사실 재시작 버튼은 있는데 메인메뉴로 돌아가는 버튼은 제공해주지 않아서

내가 대충 도트로 직접 그려보았다 키키

 

 

근데 여기서 문제가 하나 있었는데 분명 그릴땐 이상이 없는데

유니티로 가져오니까 저렇게 색상이 살짝 깨지는 현상이 발생했다

이는 원본 이미지가 너무 작으면 나타나는 현상이라고, 유니티가 알아서 색상을 보강하는건데

이럴땐 원본이미지에서 컴프레션을 None으로 바꿔주면 된다

 

-------------------------------

 

 

 

 

그리고 마지막으로 FinalLine을 정해서

여기까지 닿아야 게임 클리어로 인정하는 기준선도 만들어주었다

 

 

-------------------------------

 

 

근데 기획자 친구의 얘기를 들어보니 이 게임은 플레이어가 이동하는 방식이 아니라

맵이 움직이고 플레이어는 제자리에서 점프하는 방식이라고 한다

 

다음엔 이걸 수정해봐야겠다

728x90
반응형