• ̫• 뱁새 • ̫• [1127282] · MS 2022 · 쪽지

2024-01-01 13:24:00
조회수 3,652

Dog vs Cats (2)

게시글 주소: https://orbi.kr/00066296086

안녕하세요 뱁새입니다 (۶•<•)۶❗️


오늘은 고양이 구현과 hp바 구현을 하는 과정을 정리해볼 예정입니다


그럼 가봅쉬다❗️




첫 번째, 고양이와 hp바 만들기



먼저 normalCat이라는 개체를 만들고 그 안에 Image UI 두 개를 만들어 hp바 구현을 해보았습니다


 


이때, hp바로 쓰일 막대의 속성 중 Pivot이라는 것이 있는데 이는 UI의 기준점을 의미합니다

따라서 Pivot의 x값이 0.5라면 가운데가 기준이 되어 Scale의 x값을 열심히 조절해도 

가운데부터 차오르거나 없어지는 그런 요상한 모양이 되어버리지요



그러니 Pivot의 x값을 0으로 설정하고 Scale의 x값을 임의로 입력해보면 



이렇게 왼쪽에서부터 0.4만큼 피가 차있는 모습을 확인할 수 있습니다



hp바의 기초공사를 끝냈으니 고양이에게 적용해줄 애니메이션을 만들고 



Loop Time 체크를 해준 후



이 애니메이션을 normalCat에 적용해주고

여러분 몰래 만든 fatCat의 애니메이션도 따로 만들어 적용시켜주었습니다



이때 normalCat과 fatCat은 한 마리만 내려오고 끝인 것이 아니라 계속해서 내려와야 하므로 prefab 처리를 위해

고양이들을 Prefabs 폴더 안에 넣어준 후



cat.cs 안에 코드를 작성해주었습니다



이후 Unity로 돌아와 실행해보니 귀여운 고양이가 고개를 까딱대며 내려오네요!




두 번째, 고양이와 밥 충돌시키기


고양이를 만들었으니 이제 갱얼쥐가 쏘는 밥과 고양이가 충돌하도록 해야 하는데



이는 밥에 food 태그를 먼저 붙여주고 



밥에 rigidbody 2D, circle collider 2D 요소를 부여하는데

밥은 위로 쏘아져야 하므로 중력의 영향을 받아서는 안 됩니다

따라서 Body Type을 Kinematic으로 설정해 중력의 영향을 받지 않도록 해주었답니다



그리고 중력의 영향을 받지 않을 때는 is Trigger도 한 세트로 체크해주어야 합니다

만약 is Trigger을 체크하지 않으면 충돌 감지가 되지 않아요



밥에 rigidBody와 collider 요소를 부여해주었으니 고양이에게도 collider 요소를 부여해주어야겠죠?

이때, collider Size의 수치를 변경해가며 충돌 범위가 고양이를 감싸도록 해주었답니다



이제 대망의 코드 작성..!


float를 이용해 기본 에너지를 세팅해주고

조건문을 이용해 energy가 full보다 작을 경우에 밥이 고양이와 충돌하면 hp바 상승 및 밥 삭제,

energy가 full과 같을 경우 hungry 이미지가 아닌 full 이미지가 나타나도록 하였습니다



그리고 배가 부른 고양이가 그 자리에 계속 남아있으면 굉장히 곤란해지기 때문에

화면 오른쪽에 존재했던 고양이는 오른쪽으로, 왼쪽에 존재했던 고양이는 왼쪽으로 빠지게끔 코드를 작성해주었습니다



이후 옆으로 빠진 고양이는 3초 후에 뾰로롱 사라지도록 Destroy도 추가해주었습니다



Unity로 돌아와 실행해보면..?





세 번째, retryBtn 만들기


게임이 정상 동작하는 것을 확인하였으니 이제 retry 버튼을 만들어 볼 차례네요!



먼저 retryBtn을 만들어주고 button 요소를 추가해준 뒤



retryBtn.cs에서 ReGame 함수를 만들어 retryBtn을 눌렀을 때 MainScene이 로드되도록 해주고



저장 후 onclick에 연결해주었습니다


그런데 이 retryBtn이 나타나는 경우는 게임 오버가 되었을 경우이므로

게임 오버가 되는 경우를 만들어주어야 합니다


이는 gameManager 싱글톤화 그리고 cat.cs를 조금만 손보면 되는데요



1. gameManager를 다른 cs에서 부를 수 있도록 하기 위해 위와 같은 코드를 작성해주고



2. gameManager 내에 gameOver 함수 작성!



3. 이후 cat.cs에서 특정 y좌표 아래로 내려가면 gameOver 함수를 호출하도록 기존에 작성했던 코드 안에


if (transform.position.y < -16.0f)

        {

            gameManager.I.gameOver();

        }


를 추가해주었습니다!


과연.. retryBtn이 제대로 뜰까요?



ㄸ.. 뜬다! 



뿌듯




다음에는 레벨 구현과 앞서 만들었던 뚱띠 고양이도 내려오도록 해볼 예정!

rare-더 귀여운 비둘기

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.