: 복잡한 애니메이션 행동을 만들고 제어하는 데 사용되는 비주얼 스크립트
플레이어 캐릭터 VS AI NPC 애니메이션 작동 메커니즘 비교
- 입력 방식의 차이
구분 플레이어 캐릭터 AI 캐릭터 제어 방식 키보드, 마우스 등의 입력 AIController가 결정 이동 처리 입력값을 받아 AddMovmentInput(),
AddControllerYawInput() 등 사용MoveToActor(), MoveToLocation() 등의
네비게이션 기반 이동애니메이션 트리거 입력값에 따라 애니메이션 블렌딩 수행 AI의 상태에 따라 애니메이션 변경
- 애니메이션 전환 방식
구분 플레이어 캐릭터 AI 캐릭터 애니메이션
상태 전환ABP에서 플레이어의 입력 값을 기반으로
Speed, Direction등의 변수를 사용해 애니메이션 블렌딩Behavior Tree + Blackboard에서의 행동 감지/
ABP의 로직에 따라 변경애니메이션
적용 방식플레이어의 입력값(AxisValue)을 받아
캐릭터의 Speed를 계산, 이를 ABP에서 사용MoveTo 시리즈와 같은 움직임 관련 함수를 실행
AI 캐릭터 속도 변경 => ABP에서 감지하여 전환
기본적으로 Animation Sequence의 Notify Track에서 우클릭 -> Add Notify -> Play Sound로 적당한 시점에 Sound가 발생되도록 함
Sound가 소리의 근원지로부터 멀어지면, 크기가 작아져야할 것 같은데 일반적인 세팅에서는 그렇지 않았음. 이를 해결하는 기능이 Attenuation
SFX Attenuation(감쇠) : 거리 등에 비례해 소리의 크기가 달라지도록하는 기능
Notify에서 Play Sound만 그런지는 모르겠지만, 일단 소리가 재생됬을 때 관련 값들이 고정된 상태임 = 중간에 이 소리에 개입을 못함 => 소리가 안들리는 곳에서 소리가 들려야할 거리까지 와도 Sound가 안들림
=> 이 문제는 Meta Sound로 해결 가능
일단 해보니까 Notify 말고 Spawn Sound
나 Audio Component를 사용해봐도 똑같음.
대신 Sound Wave든 Sound Cue든 Details의 Voice Management의 Virtualization Mode를 Play when Silent
로 설정하면 됨
참조 사이트
1. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/animation-blueprints-in-unreal-engine?application_version=5.5
2. https://forums.unrealengine.com/t/sound-not-playing-at-all-when-entering-attenuation-range/2342104/3