본문 바로가기

Unity/Unity 스파르타

6주차 - 2D 게임 프로젝트

728x90

나의 구현 파트는 몬스터..

 

오늘은 기본적인 몬스터의 움직임, 플레이어의 추적을 구현해볼 것

 

몬스터의 이동

 

최대한 재활용성을 살리는 코드를 짜보자..

 

1. MonsterController 에서 이벤트를 관리하자.

  • MonsterStats : 몬스터 스탯
  • MosnterMovement : 움직임
  • MonsterLifeCycle : 대미지 및 생명 관련 
  • MonsterAnimationController : 애니메이션
  • 근거리 몬스터, 원거리 몬스터에 따라 attck 스크립트를 사용

몬스터 콘트롤러에 [RequireComponent(typeof())] 어트리뷰트를 사용해 필수 스크립트를 설정해주자

 

움직임

MosnterController 에 OnMoveEvent 델리게이트에 연결해서 사용하자

 

플레이어가 몬스터의 영역에 들어오게되면 플레이어를 추적하게 만들자.

MonsterController 에서 플레이어와 몬스터간의 거리를 계속 추적하게 하고 MonsterMovement에서 컨트롤러에 접근해 거리를 비교한후 움직이게 하자.

공격 범위가 있는 몬스터의 경우 공격범위까지만 이동시키도록 하자.

 

attack 스크립트는 컨트롤러의 OnAttackEvent에 연결해주자, 몬스터가 공격을 했을때 실행할 이펙트 또는 애니메이션을 연결하자

몬스터가 죽지 않았으면 플레이어가 공격범위 내에 들어왔는지 체크, 들어왔으면 공격

원거리의 경우 원거리 Projectile 를 생성시켜 플레이어를 공격시키기 + 애니메이션 실행

근거리의 경우 공격 애니메이션 실행

공격 쿨타임 설정하기 

 

MonsterLifeCycle 스크립트로 몬스터의 체력을 관리해주자

컨트롤러의 OnHitEvent 에  float 형식으로 걸어주자.

 

몬스터가 플레이어의 공격에 당하면 이벤트를 불러오자, 동시에 몬스터의 체력을 확인하고 0과 같거나 작으면 OnDeathEvent에 구독해놓은 함수를 실행 시킨다.

 

 

* 구독 과정에서 오버플로어가 일어나서 확인해보니, OnHitEvent 가 일어나 몬스터의 체력을 확인해 OnDeathEvent로 이어지게 만들어 놨는데 OnHitEvent를 실행하는 함수안에 OnDeathEvent를 불러오는 함수를 중복 작성해 놔서 일어난 일이였다..

 

 

 

 

728x90