Player Object의 HP구현과, 부딪힐 때 Animation Play하기
원 강좌 23번! 주소는 다음과 같습니다.
URL : [이동하기]
이번 강좌는 Player 객체에 HP를 만들어 주고, Pumpkin 객체와 충돌 시 HP가 감소하는 기능을 구현해 보도록 하겠습니다.
1. BoxCollider를 이용하여 IsTrigger기능 활성화 하기
먼저 위 그림과 같이 Player를 선택한 후 Box Collider 컴포넌트를 추가해줍니다. 그리고 Is Trigger를 Check하여 True로 설정을 해 주고 주황색 표시가 된 것 처럼 Center와 Size값을 조정 해 줍니다.
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와 이펙트 프리팹을 이용하여 충돌시 이펙트 나오게 하기
<로보로보> 라는 이전 강좌에서 가져오신 것 같습니다. 패키지 추가 후 위와 같이 추가 패키지에서 위의 Eff_DamagePre를 드레그 엔 드롭으로 추가 해 줍니다. 그리고 혹시 값을 확인해 보고 다른 것이 있다면 왼쪽의 Inspector에 있는 값과 같이 수정해줍니다.
Enemy 오브젝트와 부딪힐 경우 Effect를 보여주기 위해서는 아래의 코드를 추가 해 주어야 합니다.
그리고 Player Script에 있는 Dmage Effect에 Eff_DamagePre를 드레그 해서 드롭 해 줍니다.
아래와 같이 추가가 되면 부딪힐 경우 별모양이 나오게 됩니다.
라고 기대를 하였지만 뭔가 문제가 있었습니다.
파티클 이미지가 보이지 않는 문제가 있었습니다.
이 문제를 해결하는데 2주정도 걸렸던 것 같습니다.
각종 시도를 다 해 보았지만 한동안 막혀있고, 바쁘다는 이유로 잠시 미뤄두기도 하였습니다.
먼저 Google 또한 검색을 해 보았지만, 뭔가 이렇다 할 답이 나오지 않았습니다. (사실 저는 검색 능력이 굉장히 약합니다.)
결국 그래서 다시 패키지의 Texture와 Materials를 점검하던 중 1_Material에 있는 Mat_Dtar를 Eff_DamagePre에 먹이니까.
(먹이다는 표현은 드레그 하여 드롭했다는 뜻입니다. )
해결이 되었습니다.
위와 같이 작업을 하였습니다. 위 화면의 좌측 하단에 있는 Project Tab의 Assets 부분을 보시면 2_Resources에 1_Effect에 1_Materials에 있는 Mat_Star를 Eff_DamagePre에 먹였습니다.
별이 정상적으로 보입니다 드디어!!!
별이 게임에서도 정상적으로 보입니다..
정말 감격의 순간입니다. 또한 프로그래밍을 하다가 막힐 경우에는 잠시... 혹은 그보다 오랜 휴식이 도움이 될 수도 있습니다.
'도구(Tools)' 카테고리의 다른 글
[Unity] 게임 다듬기 (쉬어가면서, 정리) (0) | 2017.03.27 |
---|---|
[Unity] FilledSprite를 이용하여 HP 게이지 바 만들기 (0) | 2017.03.24 |
[Unity] 마녀이야기 새로 작업 (앞 부분 누락된 것들 중 중요사항들 ) (0) | 2017.02.22 |
[Unity] 마녀이야기 강좌 중간점검 후... (0) | 2017.02.22 |
[Unity] Trigger 기능을 사용하여 삭제해주는 Delete Object만들기 (0) | 2017.02.16 |