유니티 프로젝트 - 전투 구현 2

2024. 12. 27. 10:09카테고리 없음

지난 번에 전투 구현을 위해 유닛들에게 상태머신을 도입하기로 했다.

 

우선 필요한 상태부터 생각해보면 대표적으로 Idle(대기상태) / Move(움직이는 상태) / Attack(공격 상태) 가 있다.

 

Idle

 

Idle 에서 Move 로 넘어가는 조건이 현재 위치 기준으로 상대편의 유닛들 중에서 가장 가까운 적을 타겟으로 지정 하는 것이다.

이때 가장 가까운 적을 찾는 방법이 배틀 매니저에게 우리편과 상대편의 유닛 들을 리스트에 등록해 관리하고, 원하는 타겟을 찾아주는 기능을 추가해서 유닛에서 배틀매니저에게 요청하는 것이다. 이로 인해서 타겟팅 시스템을 배틀매니저에 추가했다.

 

우선 현재는 단순히 가장 가까운 적 하나만 필요하기에 그런 기능을 가진 함수 하나만 만들고 넘어갓었는데,  후에 스킬을 위해 타겟팅 시스템을 개편하면서 조금 달라지게 되었다.

 

Move

 

Idle 에서 타겟을 지정해놓으면 Move  에서는 타겟의 방향으로 Rigidbody.velocity 를 줘서 움직이게 한다. 이때 타겟의 위치 그대로 목표위치 로 지정하는것이 아니라 타겟에서 기준유닛의 사정거리만큼 기준유닛 쪽으로 가깝게 지정해서 사정거리 앞까지만 이동 후 공격 상태로 넘어가게 되있다.

 

조정된 목표위치를 계산해주는 함수 (UnitMovement.cs)