Player Object의 HP구현과, 부딪힐 때 Animation Play하기


원 강좌 23번! 주소는 다음과 같습니다.   

URL : [이동하기]


이번 강좌는 Player 객체에 HP를 만들어 주고, Pumpkin 객체와 충돌 시 HP가 감소하는 기능을 구현해 보도록 하겠습니다.


1. BoxCollider를 이용하여 IsTrigger기능 활성화 하기


먼저 위 그림과 같이 Player를 선택한 후 Box Collider 컴포넌트를 추가해줍니다. 그리고 Is Trigger를 Check하여 True로 설정을 해 주고 주황색 표시가 된 것 처럼 CenterSize값을 조정 해 줍니다.



2. C# OnTriggerEnter 기능을 이용하여 충돌 시 HP감소시키기


위의 코드를 Player 스크립트에 추가 해 줍니다. 내용을 살펴보면 간단히 처음에 HP를 10으로 설정을 하고 트리거로들어가는 경우, 즉 호박과 부딫히는 경우 HP를 1씩 감소시킵니다.


게임 플레이 화면으로 호박과 부딪혀서 100이었던 HP가 감소된 것을 확인할 수 있습니다.

원 강좌에서는 위의 Code추가라는 문구 왼쪽처럼 Code를 작성하라고 나오지만 작성을 해 보면 위의 노란색 상자안의 부분처럼 코드가 자동으로 수정되어서 Error가 없어집니다. 버전에 관계가 있지 않을수도 있지만 자동으로 수정되는것을 권장하며 Editor가 수정을 해 주었으므로 그대로 작성을 하셔도 무방할 것입니다.



3. Animation 속성 값 변경하여 빠르게 플레이 해 주기

우선 Animator 컴포넌트를 받아올 변수를 선언해줍니다. 


그 후 Animator에 왼쪽에서 Player를 드레그하여 드롭해줍니다.

그 후 아까 편집하던 Player 스크립트에 아래의 코드를 추가 해 줍니다.


위 설명과 같이 Animator가 존재할 때와 아닐때의 조건을 나누어 작성한 코드입니다.


또 위의 설명과 같이 Start()코드에도 Animation Component가 존재하지 않을 때를 위한 코드를 추가해줍니다.

데미지가 끝달 때 호출될 함수로 DamageCheck값을 False로 바꾸어줍니다.



1_damage 에니메이션의 25 프레임에 이벤트를 추가해줍니다. 

1번 주황색 칸을 선택하여 25를 입력 후 2번 위치 버튼을 클릭 해 줍니다. 그러면 아래 그림과 같이 빨간 실선이 추가 됩니다.




Edit Animation Event 창에서 Function 항목에  위에서 작성한 DamageEnd() 를 선택합니다.









4. Exporting Package와 이펙트 프리팹을 이용하여 충돌시 이펙트 나오게 하기


 원 강좌에서 Chapter2에서 작성한 피격 이펙트를 사용한다고 하셨습니다. 그 피격이펙트는 package로 첨부를 하겠습니다. 

<로보로보> 라는 이전 강좌에서 가져오신 것 같습니다.  패키지 추가 후 위와 같이 추가 패키지에서 위의 Eff_DamagePre를 드레그 엔 드롭으로 추가 해 줍니다. 그리고 혹시 값을 확인해 보고 다른 것이 있다면 왼쪽의 Inspector에 있는 값과 같이 수정해줍니다.

Enemy 오브젝트와 부딪힐 경우 Effect를 보여주기 위해서는 아래의 코드를 추가 해 주어야 합니다.


그리고 Player Script에 있는 Dmage Effect에 Eff_DamagePre를 드레그 해서 드롭 해 줍니다. 








아래와 같이 추가가 되면 부딪힐 경우 별모양이 나오게 됩니다.




라고 기대를 하였지만 뭔가 문제가 있었습니다.

파티클 이미지가 보이지 않는 문제가 있었습니다.


이 문제를 해결하는데 2주정도 걸렸던 것 같습니다. 




각종 시도를 다 해 보았지만 한동안 막혀있고, 바쁘다는 이유로 잠시 미뤄두기도 하였습니다.

먼저 Google 또한 검색을 해 보았지만, 뭔가 이렇다 할 답이 나오지 않았습니다. (사실 저는 검색 능력이 굉장히 약합니다.)



결국 그래서 다시 패키지의 TextureMaterials를 점검하던 중 1_Material에 있는 Mat_Dtar를 Eff_DamagePre에 먹이니까.

(먹이다는 표현은 드레그 하여 드롭했다는 뜻입니다. )


해결이 되었습니다.




위와 같이 작업을 하였습니다. 위 화면의 좌측 하단에 있는 Project TabAssets 부분을 보시면 2_Resources1_Effect1_Materials에 있는 Mat_StarEff_DamagePre에 먹였습니다.


별이 정상적으로 보입니다 드디어!!!



별이 게임에서도 정상적으로 보입니다..


정말 감격의 순간입니다. 또한 프로그래밍을 하다가 막힐 경우에는 잠시... 혹은 그보다 오랜 휴식이 도움이 될 수도 있습니다.



+ Recent posts