ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CCI - 09 - 맵 디자인 & Death zone
    팀업 프로젝트/C.C.I

    안녕하세요.

     

    오늘은 간단한 맵 구성과 함께 

     

    플레이어가 맵에서 추락 시 닿으면 

     

    죽는 동작 구현을 함께 알아보겠습니다.

     

     

    이 죽는 동작구현의 코드는, 플레이어의 하트가 모두 소진되었을 시에도

     

    실행시켜 주어 같은 동작이 되게끔 하였습니다.

     

    바로 이런.. 동작이 연출됩니다.

     


    첫 번째 작업은 간단한 큐브 맵 이미지를 이어 붙여서

     

    그 위에 CatEnemy들을 올려 두었습니다.

     

    이후 이 맵 아래에

    DeathZone을 설치하여

     

    플레이어가 맵에서 이탈되어 추락 시

     

    죽은 상태가 되게 구현을 해 주었습니다.


    새로 생성한 PlayerDeath 스크립트입니다.

     

    간단히 이 콜라이더에 충돌체 검사를

     

    OnCollisionEnter로 받아 충돌 시 이벤트가 실행되게 해 주었으며

     

    collision의 게임 오브젝트 태그가 Player일 시 Restart함수를 실행해 줍니다.

     

    (함수를 따로 구현해놓은 이유는, 따른 곳에서도 접근을 하게 하기 위함입니다.

    현재 사용된 곳을 예로 보자면 DeathZone과 충돌을 하지 않더라도

    Player의 하트가 0이 되면 이 Restart함수가 실행되어 플레이어의 죽음을 나타내어 줍니다.)

     

    Restart함수에서는 StartCorutine로 RestartProcess 코 루틴 함수를 실행시켜 줍니다.

    (코 루틴 함수를 작성한 이유는, 즉시 실행되지 않고 일정 시간을 기다린 후 씬 재 로드를 하기 위함입니다.)

     

    코 루틴 함수 RestartProcess를 보자면

     

    첫 번째 PlayerMovement에 있는 PlayerDie함수입니다.

    중복 방지를 위해 isDie : 죽었는지 체크할 불 변수로 체크를 해 주는 모습이며.

     

    PlayOneShot으로 사운드를 재생해 주는 모습입니다.

     

    여기서 layer를 12로 바꾼 이유는

     

    플레이어가 죽었을 시 (누웠을 시) 다른 충돌 판정을 받을 오브젝트에게 부딪히면

     

    나타나는 효과를 없애주기 위함입니다.

    (layer가 12(PlayerDmage)의 상태가 되면 충돌 판정을 일어나지 않게 지난 글에 설정을 해놓았습니다.)

     


    코 루틴 함수 RestartProcess를 이어서 보자면 

     

     SceneManager.LoadScene를 이용해

     

    현재 씬 (SceneManager.GetActiveScene(). buildIndex)을 재 로드해줍니다.

     

    즉 5초의 시간을 기다 린 뒤 초기와 같은 상태로 돌아오게 됩니다.

     

    이후 PlayerMovement의 isDie는 다시 fasle로 바꿔 주어 

     

    플레이어가 죽지 않은 상태임을 알려 줍니다.

     


    이 Restart함수는 플레이어의 하트가 모두 소진됐을 시 에도

     

    실행시키게 동작 구현을 해 두었습니다.

     

    PlayerHit 스크립트에 있는 PlayerHitHeart 함수에

     

    하트가 0이 되었을 시

     

    Restart의 함수를 실행되게 해 놓았습니다.

     


    한 가지 추가로

     

    테스트를 보다 편하게 하기 위하여

     

    OnClickJumpBtn 함수 (점프)의 실행을

     

    PlayerMovement스크립트의 Update함수에 추가를 시켜 주었습니다.

     

    즉 Jump (Spacebar)로 점프가 가능하게 됐으며

     

    playerMove 담당 코드는 isDie가 false 일 때 '만' 실행되는 코드를

     

    이때 작성해 주었습니다.

     


    마지막으로 맵에 다리를 만들어

     

    플레이어의 점프를 이용한 환경을 만들어 주었습니다.

     

     

    00 : 50초

    이것으로 플레이어가 DeathZone에 충돌하게 되면

     

    플레이어의 Die 동작을 구현하고

     

    씬이 재 로드되는 부분을 보았습니다.

     

     

    다음 글에선 플레이어의 이동 부분에 대해 추가적인 부분을 알아보겠습니다.

     

     

    감사합니다.

     

    댓글

김효겸 / Tel. 010-7735-0580 / E-mail. dollzzang2@hanmail.net