250903

凡愚·2025년 9월 3일

개발 일지

목록 보기
283/350

✅ 한 것들


  • 지원서 작성 및 깃북 정비
  • R&D : Isometric, Spine


🛠️ R&D


Isometric

2D

  • unity 자체 isometric tilemap 사용하거나 직접 만들 수도 있긴 함
  • 애니메이션 만들 때 8축 다 그려야 해서 오래 걸림
  • 넓은 물체 sorting 문제 생김

3D

  • 2D에 비해 디테일 그리는거 어렵고 오래 걸린다
  • 애니메이션 쉽게 만들 수 있다

2D + 3D

  • 가장 좋다. 애니메이션 필요하면 3D로, 디테일 필요하면 2D로.
  • collider를 직접 설정해줘야 해서 번거로울 수 있다

한 칸의 크기 (PPU)는 가로 기준
그려진 한 면에서 가로와 세로를 찾아 Cell Size 비율을 설정
Sprite Editor에서 Slice할 때 Isometric이 아니라 Rectangle로 하는 것
분명 Multiple Rectangle로 잘랐는데 모양이 다이아 모양이 됐다면 파일 지우고 다시

코드 : https://gist.github.com/SeizeTheDay7/cf3f9f63f7fc295dddcd10bd5be511bf
참고할만한 영상 : https://www.youtube.com/watch?v=_TY0F7Zm6Lc

문제

  • 방향키로 조작하면 대각선으로 이동 끝내려고 해도 마지막 남은 방향키가 하나라 동서남북 직선 방향 Idle 애니메이션이 재생됨.
    • 입력 버퍼를 넣으면 빠르게 방향 전환할 때 어색한 문제 발생
    • 이동 버퍼를 넣으면 조작감이 답답해지는 문제 발생
    • 애니메이션을 update가 아니라 fixedupdate에 넣으면
  • 마우스로 클릭하면 해당 위치로 가는 이동법 도 많은 Isometric 게임에서 채용됨. 하지만 navmesh는 3D가 기준.
    • 억지로 2D에 3d collider 추가해서 쓰거나, 외부 라이브러리 가져와서 써야됨

향후에 진짜로 필요해지면 더 고민해보기

근데 애초에 Isometric 할거면 강도가 총 겨누지 않는 이상 3D 기반으로 만드는게 맞는 거 같다
NavMesh도 안되고 collider 지정도 곤란하고 애니메이션도 힘들고
튜토리얼이 괜히 없는게 아님

Spine 패키지

https://www.youtube.com/watch?v=DxDZtTK2nlE

SkeletonAnimation 컴포넌트

  • spine 패키지의 핵심
  • 하는 일
    • GameObject에 Spine skeleton을 추가한다
    • animate한다
    • 애니메이션 이벤트에 반응한다
    • 기타 등등

SkeletonDataAsset

  • skeleton data와 texture atlas 제공
  • spine editor에서 export한 것들 그대로 넣으면 asset 자동 생성됨
  • 씬에 끌어다 놓으면 skeleton GameObject 생성

AnimationState

  • GetComponent<SkeletonAnimation>().AnimationState : 할당해놓고 애니메이션 현재 상태 확인할 수 있는 인스턴스
  • track 개념 : 상위 track은 하위 track을 override
  • AnimationState.SetAnimation()
    • SetAnimation()은 기존 Animation을 내쫓고 재생
    • 인자 1 : Track Index, 애니메이션 override 가능
    • 인자 2 : Animation, 무슨 애니메이션
    • 인자 3 : loop, 루프 할건지
  • 애니메이션이 다른 애니메이션으로 바뀔 때 mix duration이 부드럽게 전환 정도 결정
  • SkeletonDataAsset에서 Mix Settings로 mix duration 설정 가능
  • AnimationState.SetAnimation()
    • 애니메이션 뒤에 재생할 애니메이션 추가
    • 인자 1,2,3 : 동일
    • 인자 4 : delay, 얼마나 기다린 후에 재생될건지. 0으로 두면 앞에거 끝난 후에 재생.
  • SetAnimation()과 AddAnimation()은 TrackEntry 객체를 반환하는데, 이걸로 애니메이션 추가 조정 가능
    • mix duration 등 수많은 속성 조절 가능
  • skeletonAnimation.AnimationState.Event += HandleAnimationStateEvent : 모든 애니메이션에 이벤트 발생 체크 (editor에서 이벤트 지정)
  • trackEntry.Event += HandleAnimationStateEvent : 특정 애니메이션에 이벤트 발생 체크
  • AttachmentTrheshhold : 파티클같은거 애니메이션에서 attachment로 추가했을 때 애니메이션 전환 시에 갑툭튀 안 하게 조절
  • skeletonAnimation.state.AddEmptyAnimation() : 포즈 초기화 애니메이션 추가

SkeletonAnimation은 meshrenderer를 사용하기 때문에 lighting 있으면 shadow cast한다

SkeletonUtilityBone 컴포넌트 : 계단 걸을 때 발 높이 맞추기 등

SkeletonGraphic 컴포넌트 : SkeletonAnimation 대신 사용. UI에 spine 객체 렌더링 가능

  • BoneFollwerGraphic : UI 요소가 본을 따라가게 함

SkeletonMecanim 컴포넌트 : SkeletonAnimation 대신 사용. animation controller처럼 애니메이션 편집 가능하게 됨 (limitations 있으니 안 쓰는게 맞다)



0개의 댓글