관리 메뉴

도드넷

도드의 개발노트#5 - 유니티 공격 시스템 1부 본문

창고/나만의 게임 제작

도드의 개발노트#5 - 유니티 공격 시스템 1부

도드! 2016. 9. 22. 20:44




DREAM ON DREAM ON


dream until your dream come true


도드의 개발노트#5 - 유니티 공격 시스템 총괄 정리. 


1. 사거리내에 유닛감지


들어오는것 감지


void OnTriggerEnter2D(Collider2D thiscollider)
{


리스트에 더한다 (Add)


}


나가는것 감지


    void OnTriggerExit2D(Collider2D thiscollider)

{


리스트에서 뺀다 (Remove)


}


퍼펫 컨트롤 항시반복 부분 유닛감지


if (Enemies_In_Attack_Range.Count > 0 && Target)

        {

            // 공격 범위안에 있는 모든 유닛을 대상으로,

            for (int N = 0; N < Enemies_In_Attack_Range.Count; N++)

            {

                // 만약 모든 유닛중 Target 해당하는것이 감지되면

                if (Enemies_In_Attack_Range[N] == Target)

                {
                    // 공격 범위안에 있는것으로 간주한다.

                    Attack_Target_Inrange = true;


                    N = 999; // 루프아웃

                }

                else // 검사했는데 없으면 없는것으로 간주한다.

                {

                    Attack_Target_Inrange = false;

                }

            }

}


2. 공격 애니메이션 제작팁과 트랜시션


- 공격 모션은 최대 0.2~0.3초로 매우 짧은 시간에 완료해야한다. (타격감)

- 공격 애니메이션 구성은 달리기 애니와 달리 시작할때 아이들 상태와 비슷하게 시작한다. (무한 반복이 아니므로)

공격 애니메이션은 주요 3 프레임 구간으로 나누며 아이들 -> 칠 준비(올리기) -> 치기(지르기) 로 구성된다.

- 칠준비 ~ 치기(타격) 사이의 간격이 짧을수록 타격감이 훌륭해진다.


공격 애니메이션 초기화및 쿨다운일때는 아이들 상태로 돌아가게 하는데,

공격->아이들 트랜시션 설정은 나른 트랜시션보다 관대하게 긴 트랜시션을 가지도록한다.

(아이들로 돌아가는 중간구조)


하지만 발차기 같은 큰동작 같은경우 트랜시션이 가지는 시간이 부족해서 예상치못하거나 만족스럽지 않은 초기화 애니메이션이 나오는데 이럴때는 직접 공격 애니메이션 안에 초기화 애니메이션을 만들어야한다.


그러게되면 가격 타이밍과 초기화 (애니를 마치는 타이밍)이 어긋나는데 이럴경우

임펙트 함수와 애니 종료 함수를 두개만들어서 운용해야 한다.


무엇보다 애니메이션 파트는 만족스럽게 나올때까지 죽도록 물고 늘어져

여러가지 시도하고 계속하고 해서 노하우를 익히고 트랜시션에 익숙해지는게 정답이라고 본다.


3. 랜덤 공격 애니메이션 재생하기


randomanim = Random.Range(0, 3);


0 부터 3개의 랜덤 양의 정수를 반환한다.

즉, 0 1 2


4. 공격 시스템 전체적 워크플로우


적을 우클릭시 Master of Puppets에 의해 클릭한 적의 정보가 Puppet Control 에 전달된다.

Puppet Control 은 자신의 위치와 타겟팅된 적의 위치를 비교해서 크면 + 속도 이동, 작으면 - 속도로 이동한다.

그렇게 공격 명령으로 이동중 1번에서 소개한 스크립트에 의해 적이 감지되면 멈추고 공격 애니메이션을 실행한다.









반응형
Comments