adsense



빡개발 일지 - 유니티로 2D 방치형 RPG(?) 만들기 18일차 - Multiple 타입, 애니메이터 경고 메시지

요새 관리 2부

Slice 스프라이트

화면 이펙트를 추가하는 과정에서, 스프라이트 시트로 되어있는 이미지가 있습니다.
이런 이미지를 잘라서 프레임 애니메이션으로 만드는 과정을 정리했습니다.



요약하면

에셋 인스펙터->Sprite mode : Multiple (Apply)->Sprite Editor->Slice : Type (이 경우는 Grid by Cell Count)->가로 8열, 세로 1행이므로 8, 1을 입력하고->Slice 버튼 누른 후->Apply
(※Grid by Cell Count : 그림이 일정한 크기로 가로 세로로 배열된 경우)


요새 관련 기능 이것저것 구현합니다.

요새 그림을 화면에 배치하고

관리자 스크립트를 붙여서 생성, 레벨업, 생성 후 일정 쿨타임마다 능력 발휘 등을 작성하고 테스트합니다.

일정시간마다 화면의 적 전체에게 화상 공격을 하는 화로탑

관측탑은 궁수의 최대 사정거리를 늘려줍니다. 관측탑 위에서 서성이는 꼬마 캐릭터는 단순한 아이캔디.

이외에 마나탑과 골드탑도 구현 완료.

궁수 발사동작에서 화살 제거

다행히? 이 에셋팩은 스프라이터 프로용 소스를 제공합니다. (스프라이터 프로는 비교적 저렴한 스켈레톤 애니메이션 툴로 Spine의 에센셜 버전과 비슷한 기능을 제공합니다)


소스에서 키 프레임 단위에서 불필요한 화살 오브젝트를 제거하고,

애니메이션을 테스트한 뒤

png로 익스포트 합니다.
(처음엔 몰라서 잘 안됐는데, keyframes only를 체크 해제해주고 잘 되던)

이후는 다시 유니티로 불러들여서 피봇 지정해주고 애니메이션 내의 프레임 교체하고 이벤트 타이밍 프레임에 맞춰 조정하고 테스트하면

바로 아래를 향해 화살이 나가도 그다지 어색하지 않습니다!


game object with animator is inactive

이펙트에서 이런 경고?가 나길래 보니까
SetActive(true)하고 곧바로 애니메이션 재생을 시도하면 안먹힐 수 있다고 하네요.
(이게 반복 애니메이션일때와는 또 달라서, keepAnimatorControllerStateOnDisable 플래그하고는 관계 없는 경우)

코루틴으로 제대로 액티베이트 되었나 검사 후 재생하도록 변경했습니다.

(기존)
  1. effectRet.SetActive(true);
  2. effectRet.GetComponent<Animator>().Play(0);

(개선)
  1. effectRet.SetActive(true);
  2. (중략)
  3. while(!effectRet.GetComponent<Animator>().isActiveAndEnabled)
  4. {
  5. yield return null;
  6. }
  7. effectRet.GetComponent<Animator>().Play(0);





덧글

댓글 입력 영역


Books

Geek라이프

기초부터 시작하는 모형 전자공작
박성윤 저

패미컴 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

MSX&재믹스 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

핵심강좌! Cocos2d-x
이재환 저
예스24 | 애드온2
일본서적 전문사이트 NEPIC