본문 바로가기
언리얼_엔진_게임개발_공부/언리얼 블루프린트

[언리얼/블루프린트] 애니메이션 & 사운드 - 강의 메모

by jaboy 2024. 12. 18.

애니메이션

AnimGraph 살펴보기

우측 에셋 브라우저에서 애니메이션 파일 끌어와 노드로 생성

Output Pose 로 애니메이션 확인 가능 / 우측에 루프 체크해야 반복함

상태도 State Machine 만들어서 조건에 따른 애니메이션 실행

 

상태도 State Machine (*보통 로코모션이라고 이름 지음?)

- 어떤 애니메이션을 수행할지 도식화 하고 애니메이션이 바뀌는 조건을 설정

- 예를 들어, Fall 애니메이션은 캐릭터가 falling 일 때 재생해야하므로

  >> 이벤트 그래프에서 try get pawn owner 의 return value 인 폰을 --> cast to BP_Character (run from blueprint update animation event) --> As BP Character ~ Is Falling --> Set as True/False value of IsFalling boolean variable

  >> 이 변수를 이용해 상태도에서 Entry > Idle > Fall 연결하고 Idle > Fall 조건을 IsFalling 으로 결정

  >> AnimGraph 에서 상태도 아웃풋으로 연결

 

블렌드 스페이스

- 애니메이션의 중간값

Walk ~ Run

- 속도만 볼 것이므로 가로 축만 사용 - name Speed, 최대 축 값 설정 (500)

- 샘플 포인트를 Speed 축 0일 때로 이동 -> 샘플에 Idle None축 값 0으로

- Walk 샘플포인트로 가져오고 Speed 200으로 / Run 은 Speed 500으로

- 그래프에서 Ctrl 누르면 해당 위치의 애니메이션 프리뷰

--> State Machine 에서 BS 가져와 연결 후 컴파일

 

상태도 추가

- 애니메이션 그래프에서 Character Movement --> Get Velocity --> Vector2D (z 축은 자동 제외) --> length (벡터의 길이니까 속도를 나타냄) --> Speed 변수 (float) 로 저장

- BS (스테이트) 에서 Speed 변수 입력 연결

 

에일리어스 alias - 다른 애니메이션으로 연결

Alias ~ Fall ~ Fall Loop

- 스테이트 alias 추가 --> 우측에서 idle 체크 (idle에서 넘어가는 애니메이션이므로) --> fall --> fall loop 연결

- fall --> fall loop 는 둘 사이 규칙 클릭하고 우측 디테일 - 트랜지션에서 "스테이트의 시퀀스 플레이어에 따른 자동 규칙" 하면 fall 종료시 fall loop

-  idle --> fall 규칙: is falling 이 True 일 때

 

Land ~ Idle

- 마찬가지로 자동규칙

 

Fall/Fall loop ~ Land

- 에일리어스 추가 --> 우측에서 fall & fall loop 체크

- fall/fall loop --> land 규칙 : is falling - not

 

속도가 빠르면 fall/fall loop ~ idle 바로 가도록 (Land 로 가지 않고)

- 위의 에일리어스 ~ idle

- fall/fall loop --> idle 규칙 : is NOT falling && speed > 100

 

블렌드 세팅

- 애니메이션 전환 시 크로스페이드

 

사운드

사운드큐를 통해 걷거나 뛸 때 사운드 재생

- 사운드 큐 생성 - 랜덤 노드로 두 사운드 파일 랜덤 재생

- 애니메이션 - 타임라인 우클릭 - 노티파이 - 특정한 함수 제시 --> 다른 곳에서 애니메이션에 접근해야한다는 문제점 있음

  >> 스켈레톤 에셋 - 상단 애님 노티파이 - 우측 애니메이션 노티파이 탭에서 우클릭 - 노티파이 추가 Walk

- 애니메이션에서 해당 프레임에 Walk 노티파이

- ABP - 이벤트그래프 - 우클릭 AnimNotify_Walk

  *Play Sound 2D - 음악 재생 / Play Sound at Location - 특정 위치에서 재생하여 거리에 따라 다르게 들림

 

래그돌

자연스럽게 쓰러지거나 날아가도록 하는 것. 충돌체 설정이 필요해 피직스 에셋으로 구현.

- 피직스 에셋 생성 - 스켈레탈 메시 선택 *각종 설정은 도큐멘테이션 참고

- 캐릭터 BP 에서 쓰러지는 상황에 대한 함수 추가

 

함수

- 메시 Set Simulate Physics, Simulate 활성화 - 메시 Set Collision Profile Name (충돌할 때 규칙 e.g. 통과한다, 부딪힌다 등) - "Ragdoll" 이라는 이름의 프로파일로 설정 (언리얼에서 제공하는 것)

 

애니메이션 리타겟

애니메이션 IK Rig / IK Retargetor (IK stands for Inverse Kinematics)

IK Rig - 체인 추가해서 뼈대 체인에 이름 부여

IK Retargetor - 소스와 타깃 체인 매핑해서 애니메이션 익스포트