오늘은 몬스터와 플레이어의 전투를 구현 중에 다양한 문제가 발생하여서 이런 실수를 방지하기 위해서 정리해보기로 하였다.
몬스터가 공격 애니메이션 중에 움직여서 부자연스러움.
| EnemyAttackState |
|---|
![]() |
base.Update에서는 공격 쿨타임을 체크 중이다.
하지만 공격 쿨타임은 다음 공격만을 막을 뿐이고 추적 상태로 넘어가는 것을 막지 못했다.
몬스터의 애니메이션이 종료 후 모든 행동을 시작하는 방식으로 하였다.
| EnemyAttackState |
|---|
![]() |
그리고 플레이어의 정보를 받아오는데 CircleCast()를 이용했는데 이 코드는 Ray를 쏘는 주체인 자기 자신도 충돌을 포함해서 hit가 플레이어의 정보를 원할히 불러오지 못하는 문제가 있었다.
| FindTarget() |
|---|
![]() |
그래서 CircleCast()를 CircleCastAll로 수정하여 모든 충돌체를 가져와 플레이어 테그를 구분하여 정보를 받아왔다.
| FindTarget() |
|---|
![]() |
기획서에 공격 사정거리의 1/2가 되면 공격를 시작한다로 적혀 있어서, 그렇게 구현을 했다고 생각했다.
그래서 모든 조건을 공격 사정거리의 1/2로 설정하여 코드를 작성하였는데, 이렇게 작성하면 사실 사정거리가 공격 사정거리의 1/2로 설정되어 있는것과 같기 때문에 잘 못 구현되었다.
사실 공격 사정거리의 1/2는 추적 상태의 종료 조건이었고, 공격 자체는 공격사정거리에 있으면 시작하는 것이었다.
그래서 해당부분을 코드를 작성해주었다.
| 추적 종료 조건, 공격 조건 |
|---|
![]() |
처음 만들 때는 금방금방 제작 했는데, 구현이 어느정도 되면서 버그 잡는데 시간을 더 쓰는 듯하다