관리 메뉴

도드넷

도드 게임즈#8 - 유니티 유닛 명령 시스템과 광클-중복실행 금지 디버깅. 본문

창고/나만의 게임 제작

도드 게임즈#8 - 유니티 유닛 명령 시스템과 광클-중복실행 금지 디버깅.

도드! 2016. 9. 1. 11:51
반응형




도드 게임즈#8 - 유닛 명령시스템


▲ 만들면서들은 노래 왕좌의 게임 오프닝 8비트 ㅋㅋㅋㅋㅋ


UI 기본 컨셉 디자인 이후 심각한 명령체계에 구조조정(?) 리컨스트럭션이 필요해서 한동안 그거하다 와봄.


내 게임의 명령체계는 이럼.


1. MASTER OF PUPPETS

- 선택된 객체의 퍼펫 컨트롤 스크립트에 명령을 내린다.

("선택"의 경우 클릭시 해당 오브젝트의 "selected" 플래그를 올리는식으로 함)




2. PUPPET CONTROL

- 받은 명령을 처리한다. (타겟지정, 타겟위치 지정)

- 최종적인 캐릭터 이동/공격 명령 처리

- "Stand" 유휴상태일경우 자동으로 범위내 적탐색 및 공격


조종 스크립트와 실제 유닛 행동스크립트를 이런식으로 분리하면 심지어 적 유닛에게도 명령전달이 가능해짐.

한마디로 이건 워크레프트나 스타크레프트 처럼 기본 유닛 시스템이 만들어졌다고 봐도 됨.


만약 플레이어 캐릭터인 망치든 팔라딘에게 산적(1)을 타겟으로 주고 Attack_Target 명령을 주면 공격하듯

산적(1)에게 팔라딘(1)을 타겟으로 주고 Attack_Target 명령을 내리면 팔라딘을 공격함.


이동 같은경우도 팔라딘에게 목적지점 Vector2(A,B)를 주고 Move 명령을 하달하면 팔라딘은 해당 지점까지 이동함.

똑같이 산적(1)에게도 Vector2(A,B) 목적지에 Move 명령을 하달하면 해당지점까지 이동함.


유니티 유닛명령 중복 광클시 중복실행 애니메이션 관리 디버깅과정


만들던중에 좀 골치먹었던게 플레이어가 조종하는 캐릭터를 적을 광클했을때 공격 애니메이션이 너무빨리 리프레시

되서 재대로 끝내지도 못하고 계속 고..공공..공공ㄱ... 하는 현상이 벌어짐.


이건 공격 애니메이션이 시작됬을때 isAttacking 이라는 플래그를 참으로 놓고 공격명령시 검사해서 isAttacking이 참이면 애니메이션을 재생하지 못하게함. 그리고 공격 애니메이션을 성공적으로 끝내면 isAttacking 플래그를 내리게함.


문제는 공격 애니메이션 도중에 쳐맞고 Hit, Stagger가 걸리거나 중간에 플레이어가 애니메이션을 끊고 움직일경우인데

이건 끊기는 경우 (새로운 애니메이션이 재생될때마다 즉, GetComponent<Animator>().Play("???"); 이놈이 나올때마다) isAttacking 플래그를 앞에서 거짓(초기화)시킴으로써 무한 Attacking 상태에 갇히는것을 방지함.


(좀더 세련된 방법이 있을것같은데 현재로써는 이게 최적ㅠㅠㅠ)


//


* 추가글 : ㄴㄴ 어떻게해도 돌발상황이 발생함. 시발

그냥 stagger 상태 duration 설정해서 미니 스턴처럼 몇초 지나면 무조건 풀리도록함. 애니메이션 종료시 불을 여닫는거 하면 안될듯. 막 멈추는 현상 가끔발생함.








반응형
Comments