Humility

아무리 노력해도 최고가 되지 못할 수 있다⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀그럼에도 노력하는자가 가장 겸손한 것 아닌가

공부하는 블로그

언리얼/문법

[Unreal5] 블루프린트 캐릭터 이동, 데이터 테이블

새벽_글쓴이 2024. 11. 20. 15:59
반응형

데이터구조 타입

구조체

- 여러 변수를 하나로 묶은 사용자 정의 데이터 타입
- 블루프린트에서 Make Struct로 생성 가능

 

열거형

- 미리 정의된 상수값들의 집합
- 예: EPlayerState = {Idle, Walking, Running, Jumping}

 

필자가 만드려는 데이터 테이블에는 각 캐릭터에 사용될 플립북(애니메이션) 이 들어갈 예정

데이터 만들기

블루프린트의 Structure를 만들어주고 값을 설정해 주었다

 

데이터 테이블 생성 방법

- Content Browser에서 우클릭
- Data Asset > Data Table 선택
- Row Structure 선택 (사용할 구조체 지정)

만들어 놓은 데이터 스트럭쳐 선택

데이터 입력 방법

- 데이터 테이블 더블클릭
- Add 버튼으로 새 행 추가
- 각 열에 데이터 입력

 

Add로 추가 후 각각에 맞는 애니메이션 삽입

데이터테이블 활용 예시

아이템 정보 관리

ID, 이름, 설명, 아이콘, 가격 등

 

캐릭터 스탯

레벨별 체력, 공격력, 방어력 등

 

스킬 정보

스킬ID, 이름, 데미지, 쿨타임, 이펙트 등

 

퀘스트 데이터

퀘스트ID, 제목, 설명, 보상 등

 

실제 개발 과정에선?

기획자

- 엑셀에서 게임 데이터 작성/관리
- 시트별로 아이템, 스킬, 퀘스트 등 분류
- CSV 형식으로 추출

 

프로그래머

- 데이터 구조(Struct) 설계
- CSV 임포트 기능 구현
- 데이터 검증 로직 구현

 

예시
아이템 데이터 구조:
ID(int) | 이름(string) | 설명(string) | 가격(int) | 아이콘(string) | 효과(float)
001 | 빨간포션 | 체력회복 | 100 | potion_red | 50.0
002 | 파란포션 | 마나회복 | 150 | potion_blue | 30.0
위와 같이 만들어진 csv파일을 데이터 테이블에 넣으면 자동으로 변환되어 그 값을 사용

캐릭터 무브먼트(Character Movement)

리얼 엔진에서 제공하는 캐릭터의 물리적 이동을 담당하는 핵심 컴포넌트

 

Character Movement Component의 주요 기능

- 걷기/달리기 이동
- 중력 적용
- 점프/낙하
- 충돌 처리
- 경사면 이동
- 수영/비행

 

기본 설정값들

- Max Walk Speed: 기본 이동 속도
- Max Acceleration: 가속도
- Braking Deceleration: 감속도
- Ground Friction: 지면 마찰력
- Air Control: 공중에서의 조작성
- Fall Damage Threshold: 낙하 데미지 기준치

 

Movement Mode

- Walking: 기본 걷기 모드
- NavmeshWalking: 내비게이션 이동
- Falling: 공중/낙하 상태
- Swimming: 수영 모드
- Flying: 비행 모드
- Custom: 사용자 정의 모드

 

각 모드들의 특징

Walking

- Z축 이동 제한 (중력 영향)
- 지면과의 충돌 검사
- 경사면 자동 처리
- 계단 자동 처리

 

Falling

- Z축 음의 방향으로 자동 이동 (중력)
- 공중에서 제한된 이동 조작
- 충돌 시 Walking 모드로 전환

 

Swimming

- 3축 자유 이동 가능
- 부력 적용
- 물 저항력 적용
- 수면 위아래 전환 가능

 

Flying

- 완전한 3축 자유 이동
- 중력 영향 없음
- 모든 방향 동일한 이동 속도

 

Custom

- 완전히 커스텀 가능한 이동 방식
- 물리 법칙 직접 정의 가능
- 특수한 이동 메커닉 구현에 사용

 

NavWalking

- NavMesh 기반 이동
- AI 캐릭터 이동에 주로 사용
- 자동 경로 탐색

 

예시

실행부


Get Data Table Row 노드

데이터 테이블에서 특정 행(row)의 데이터를 가져오는 노드이다

기본 사용법

- 입력:
- Data Table: 참조할 데이터 테이블
- Row Name: 찾을 행의 이름

- 출력:
- Return Value: 찾은 행의 데이터 (구조체 형태)
- Success: 성공/실패 여부 (bool)

공격 이벤트

 

입력 이벤트

 

이동 이벤트

 

플립북 이벤트 사전설정

왼쪽을 바라보는 애니메이션은 오른쪽 바라보는 애니메이션을 180도 회전 시켜서 만듬

 

Idle

 

Move
Attack

결과

반응형