본문 바로가기

Unreal 게임개발종합반 1주차

4일차 250717 (1-9강의)

애니메이션 블루프린트와 블렌드 스페이스

캐릭터에 애니메이션 넣기(블렌드 스페이스)

1. 콘텐츠 브라우저에서 우클릭 해서 애니메이션 블루프린트 생성

2. 애님 그래프에서 캐릭터에 가만히 있을 때 대기 상태의 애니메이션을 적용 한다.

오른쪽 아래의 애셋 브라우저에서 드래그하여 A_Bot_Idle(대기 상태)을 적용 시켜 놓은 상태.(팔을 안벌림)

애셋 브라우저에서 초록색은 애니메이션 시퀀스 타입, 주황색은 블렌드 스페이스 타입, 보라색은 몽타주

몽타주와 시퀀스 타입의 차이점
시퀀스는 단일 모션만 가능하다.몽타주는 여러 개의 모션이 들어가는 게 가능하고 재생 구간별로 노티파이, 편집을 하여 여러가지 애니메이션을 합칠 수 있다.

3. 콘텐츠 브라우저에서 우클릭 해서 블렌드 스페이스 생성

4. 블렌드 스페이스에서 걷거나 뛸때의 애니메이션을 적용 한다.

왼쪽의 애셋 디테일 창에서 여러가지 설정이 가능하다. 현재 세로 축 이름과 최대 축 값, 그리드 분할만 수정함. 가운데 아래 영역에 Speed(세로 축) 기준 0은 Idle, 250에는 Walk, 500에는 Run 애니메이션 애셋을 배치했다.

애셋 브라우저에서 애니메이션 애셋을 가운데 아래 영역으로 드래그하여 배치했다.(하얀 점)

(시프트 키를 누른 상태로 드래그하면 스냅 기능이 적용되어 그리드에 자동으로 정렬된다.)

가운데 아래 영역에서 컨트롤을 누르고 마우스를 움직이면 초록색 X(프리뷰 포인트)의 위치가 변하는데 현재 상태에서의 어떤 애니메이션이 출력되는지 확인이 가능하다.

5. 애님 그래프로 돌아와서 애셋 브라우저에서 방금 만든 블렌드 스페이스 애셋 드래그하여 적용한다.

6. 속도 값이 있어야 애니메이션이 작동을 하므로 속도 값을 갖도록 이벤트 그래프에서 노드 생성한다.

애님 그래프에서 변수 플로트 타입 Speed를 생성하여 get 형태로 연결을 했다.
이벤트 그래프의 TryGetPawnOwner는 이 애니메이션을 가진 폰(캐릭터)의 속성을 가져올 수 있는 노드이다. 위 사진은 캐릭터의 속도(Velocity)를 가져온 것.
현재 Velocity의 벡터에는 X,Y,Z의 값이 모두 있다. 벡터의 X,Y값만 필요하므로 구조체 핀 분할을 해주고 X와 Y의 값만 가지고 있는 새로운 벡터를 만듦.

벡터는 힘의 크기와 방향을 가지고 있고(=속도), 스칼라 값은 힘의 크기만 나타냄. 벡터의 길이가 스칼라다.

벡터의 길이(=힘의 크기, 즉 스칼라 값)를 얻기 위해 Vector Length 연결 후 그 값을 Speed 변수에 넣음
실행 핀을 모두 연결함.

Is Valid? 노드를 넣은 이유는 모든 프로그래밍을 할 때는 방어 장치가 필요하다.

이 애니메이션 블루프린트를 예로 들면, 실행은 되지만 예상치 못한 오류가 발생하거나 캐릭터 블루프린트가 존재하지 않거나 크래시로 사라진 상황에 대비해야 합니다. Is Valid? 노드는 이러한 상황에서 해당 객체가 유효한지 확인하는 안전장치 역할을 합니다.

TryGetPawnOwner(현재는 캐릭터)가 유효하지 않은데 실행을 하면 에러가 발생하므로 리턴 값을 Is Valid?의 Input Object핀에 연결 해 주어 캐릭터가 유효한지 확인 해줘야 한다.

스테이트 머신

스테이트 머신은 피격 시 피격 모션, 공격 시 공격 모션 등 상황에 따라 애니메이션(행동)이 변하는 기능이다.

1. 애님 그래프에서 스테이트 머신 노드 생성하기

2. 대기, 뛰는 상태의 스테이트 생성 후 각 애니메이션 애셋을 적용.

만약 뛰는 상태에 Run 애니메이션 시퀀스를 적용하면, 캐릭터가 천천히 뛰다가 빨라지는 자연스러운 전환이 아니라 속도가 1만 되어도 바로 최대 속도로 뛰는 모션을 취하게 됩니다.

3. 각 상태를 연결해주고 트랜지션 룰에서 애니메이션이 변경되는 조건을 생성함.

4. 애님 그래프에서 스테이트 머신을 연결해준다.

점프 애니메이션 넣기

1. 캐릭터가 공중에 있는지 판단하는 노드를 생성한다.

캐릭터의 Movement Component가 점프 기능을 가지고 있고 무브먼트 컴포넌트의 Is Falling 노드를 사용하여 판단한다.

실행 핀을 바로 연결 해줘도 되지만 노드가 복잡해지는 것이 보기 싫다면 Sequence 노드를 이용한다.

실행 핀을 바로 연결 한 경우
시퀀스 노드를 이용하여 정리한 경우. 첫번째는 속도가 변경이 되고 두번째는 현재 공중에 있는지 아닌지 부울 값을 넣어준다.

Sequence 노드는 실행 핀이 위부터 연결된 순서대로 처리를 해주는 노드이다.

본인은 이렇게 정리했다.

2. 스테이트 머신에 Idle/Run 에일리어스, 점프, 떨어짐, 땅에 착지 모션을 추가한다.

 

스테이트 에일리어스는 두 가지 이상의 상태를 가질 수 있는 스테이트이다.

3. 각 상태에서 다음 상태로 변경되는 조건을 트랜지션 룰에서 설정해준다.

스테이트 - 디테일의 시퀀스 플레이어에 따른 자동 규칙을 체크하면 전의 애니메이션 재생이 끝나면 다음 애니메이션으로 자동으로 연결이 된다. Jump 애니메이션이 끝나면 Fall 애니메이션으로 자동으로 넘어간다는 뜻.

 

'Unreal 게임개발종합반 1주차' 카테고리의 다른 글

4일차 250717 (1-11강의)  (0) 2025.07.25
4일차 250717 (1-10강의)  (0) 2025.07.25
3일차 250716 (1-8강의)  (0) 2025.07.25
3일차 250716 (1-7강의)  (0) 2025.07.25
2일차 250715 (1-6강의)  (0) 2025.07.25