[Unity]29.RPG튜토리얼 #8 - 적 체력과 처치

안녕하세요 유랑입니다.



실력향상을 위해서 오늘도 유튜브 강의를 따라하면서 공부하겠습니다.

궁금하신점 있으시면 댓글로 남겨주세요^^




1. RPG 만들기



이번 강의는 Patreon.com에서 외국인이 만든 강좌이며,

매달 $5의 후원을 통해야 리소스 다운을 받을 수 있습니다.

저는 돈을 지불하였고, 스킬업을 위해서 복습겸 글을 올리겠습니다.


리소스 사이트 => https://www.patreon.com/inScopeStudios/posts

유튜브 사이트 => https://goo.gl/o5VcTv






2 적 체력



2-1) 버그 수정



스펠 캐스팅 중에 마우스 클릭으로 타겟을 변경하면 변경된 타겟으로 스펠이 날라가는 버그가 있었습니다.

마우스 클릭으로 myTarget을 변경시켜도 공격대상이 중간에 변경되지 않도록 코드를 수정해 주세요^^



 




2-2) 적 체력 바 만들기 



target 오브젝트 밑으로 Canvas를 생성한 후 이름을 HealthCanvas로 변경해 주세요.

그리고 Canvas => Render Mode를 World Space로 변경합니다.

이로써 UI의 좌표계가 게임오브젝트와 동일시 됩니다.






HealthCanvas 밑으로 Image를 생성한 후 BackGround로 이름을 변경해 주세요.

이미지는 bar_1를 사용하겠습니다.





BackGround를 복사 붙여넣기 한 다음 Fill로 이름을 변경한 후 자식으로 넣어 주겠습니다.

이미지는 castingBar를 사용하며 색깔도 변경해 주세요^^





적 체력바의 위치는 해골 바로 위에 적당히 만들어 주시면 되겠습니다.






2-3) 스크립트 작성



Character 스크립트를 수정해 주겠습니다.

RequireComponent는 해당 컴포넌트가 없을 경우 자동으로 추가해 주는 코드입니다.

Character 스크립트를 상속받는 Player나 NPC가 자동으로 Rigidbody2D와 Animator가 부착됩니다.








NPC 스크립트를 생성한 후 코드를 아래와 같이 작성해 주세요.

여기서 hitBox는 Character 스크립트에 정의되어 있으며 NPC의 트랜스폼을 반환하는 역학입니다.





Enemy 스크립트를 생성한 후 코드를 아래와 같이 작성해 주세요.

NPC를 상속받고, 체력바를 보여주거나 숨기는 내용을 담고있습니다.





GammeManager에 NPC 스크립트 내용에 따른 타겟에 대한 코드를 수정하겠습니다.






2-4) Enemy 연결



HealthCanvas오브젝트에 Canvas Group 컴포넌트를 추가해 주세요.

그리고 Alpha 값을 0으로 만들어 주어 적 체력바를 숨겨놓겠습니다.






target오브젝트에 Enemy 스크립트를 추가한 후 속성들을 각각 넣어주세요.

그리고 Animator를 만들고 EnemyController라는 이름으로 변경해 주세요.





게임을 실행하면 타겟을 클릭하거나 다른 곳을 클릭하면 체력바가 Fading되는걸 확인할 수 있습니다.






3. 적 처치



3-1) 적 죽음 애니메이션 



적이 죽는 애니메이션을 만들어 보겠습니다.

death_down 애니메이션들을 선택 후 드래그앤 드랍을 이용해서 target에 옮겨주세요.

그러면 죽는 애니메이션을 생성할 수 있습니다.








애니메이션을 만들게 되면 무한 루프 체크가 되어있는데 언체크를 해주겠습니다.

계속 죽을 수는 없겠죠?





만든 죽는 애니메이션은 애니메이터 상태에 올려져있을겁니다.

마우스 우측 버튼을 이용해서 Empty 애니메이션을 만들고 이름을 Idle로 변경한 후 디폴트값으로 변경해 주세요.

그리고 트리고 파라미터 die 생성과 애니메이션 상태를 이어주겠습니다.





Idle ->Die_Down으로 트랜지션을 이어주셨으면 Has Exit Time과 Fixed Duration을 각각 언체크해주세요.





죽는 애니메이션 상태를 클릭해서 DeathBehaviour라는 스크립트를 생성해 주겠습니다.






3-2) 스크립트 작성



DeathBehaviour 스크립트는 죽는 애니메이션이 실행될 때 hitBox를 제거하고, 

5초 후 해당 오브젝트를 삭제하는 기능을 가지고 있습니다.






Stat스크립트 코드를 수정하겠습니다.

Stat은 체력과 마나의 수치를 관리하는 스크립트입니다.

target의 체력바에는 수치가 없으므로 Text를 표시하지 않게 만들어 줍시다.





Character 스크립트 코드를 수정하겠습니다.

기존에 Player에 있는 체력부분을 여기다가 정의해 주겠습니다.

이유는 몬스터와 플레이어 둘다 체력이 있기에 겹치는 내용이기 때문입니다.







SpellScript 스크립트 코드를 수정하겠습니다.

발사체가 타겟에 부딪치면 데미지를 입히는 부분을 추가해 줄게요^^







Player 스크립트 코드를 수정하겠습니다.

기존의 체력부분을 삭제해 주시고, 타겟과 데미지 정보를 메개변수로 전달하는 코드를 추가하였습니다.








3-3) Enemy 연결



target오브젝트와 Fill의 이름을 각각 Enemy, Health로 이름을 변경해 주세요.


- Health에는 Stat스크립트를 추가한 후 Lerp Speed를 1로 변경

- Image Type => Filled

- FillMethod => Horizontal

- Fill Origin => Left





Enemy오브젝트에 Enemy스크립트의 체력부분을 아래와 같이 설정하겠습니다.





적의 체력이 0이되면 죽는 애니메이션으로 변경한 후 5초 뒤 사라지는걸 확인할 수 있습니다.






4. 마무리




오늘 강의는 여기까지입니다.

RPG튜토리얼을 따라하면서 적 체력과 처치를 적용해 보았습니다.

다음 시간에는 적의 정보를 보여주는 UI를 다뤄보겠습니다.

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-Unity---Extra-2D-


댓글

Designed by JB FACTORY