반응형
키 입력 방법
Classic Input System (기존 입력 시스템)
Project Settings > Input 설정
Axis Mappings
- MoveForward: W(1.0), S(-1.0)
- MoveRight: D(1.0), A(-1.0)
Action Mappings
- Jump: Space
Enhanced Input System (향상된 입력 시스템)
프로젝트 세팅
- Edit > Project Settings > Input > Default Classes에서
- Default Input Component Class를 EnhancedInputComponent로 변경
- Default Player Input Class를 EnhancedPlayerInput으로 변경
Input Action 생성
- Content Browser에서 우클릭 > Input > Input Action
- IA_Move 생성 (Value Type: Vector2D)
- IA_Attack 생성 (Value Type: Boolean)
Input Mapping Context 생성
- Content Browser에서 우클릭 > Input > Input Mapping Context
- IMC_PlayerInput 생성
- WASD 키를 IA_Move에 매핑
- Space를 IA_Attack에 매핑
명명 규칙
Input Action과 Input Mapping Context의 파일 명은
각각 앞글자를 따 IA_000 , IMC_000 으로 짓는것이 좋다
블루프린트 구현
Character 블루프린트의 Begin Play에서:
언리얼 공식자료
애니메이션 만들기
1. 다운받아놓은 애니메이션이 될 이미지 파일을 가져온다
2.이미지를 스프라이트로 만들어준다
3. 새로 만들어진 스프라이트 파일을 플립북으로 만들어준다
4. 애니메이션 완성
애니메이션 설정
Frames Per Second
기본값: 15 FPS
일반적인 설정:
- 부드러운 애니메이션: 24-30 FPS
- 기본 애니메이션: 12-15 FPS
- 느린 애니메이션: 8-10 FPS
Select
Select 노드 기본 구조
- Condition Pin ( 조건 )
- A 핀 (조건이 True일 때 선택할 값)
- B 핀 (조건이 False일 때 선택할 값)
- Return Value 핀 : 선택된 값 반환
데이터 타입별 Select 사용
Boolean Select
Condition: Is Moving?
A (true) : Move 애니메이션
B (false) : Idle 애니메이션
Integer Select
Condition: Is Power Up?
A: 100 (파워업 데미지)
B: 50 (기본 데미지)
Float Select
Condition: Is Sprinting?
A: 600.0 (달리기 속도)
B: 300.0 (걷기 속도)
String Select
Condition: Is Enemy?
A: "적군"
B: "아군"
Object/Actor Select
Condition: Is Main Character?
A: MainCharacter Reference
B: NPC Reference
Vector Select
Condition: Is Air?
A: Air Movement Vector
B: Ground Movement Vector
Select의 유연성
선택될 값의 타입 변경 가능
다양한 데이터 타입을 지원하며 실행 중에는 타입이 변경 불가해 타입 안정성을 보장한다.
매크로(Macro)
블루프린트에서 자주 사용되는 노드 그룹을 재사용 가능한 형태로 만든 것
기본특징
- 여러 노드를 하나의 단위로 묶어서 재사용
- 입력과 출력 핀을 커스터마이징 가능
- 매크로 내부 로직을 캡슐화하여 블루프린트를 깔끔하게 유지
주요 종류
- Pure 매크로: 상태를 변경하지 않고 값만 반환
- Impure 매크로: 게임 상태를 변경할 수 있음
- 매크로 라이브러리: 여러 매크로를 묶어서 관리
생성 방법
Collapse to Macro (노드 선택 후 변환)
이미 만들어진 노드들을 기반으로 매크로 생성
1. 블루프린트에서 노드들을 선택
2. 우클릭 후 'Collapse to Macro' 선택
3. 매크로 이름과 카테고리 지정
4. 입/출력 핀 설정
Blueprint Macro Library (콘텐츠 브라우저에서 생성)
빈 매크로를 만들어서 처음부터 로직 구성
노드 타입 아이콘
M 아이콘 (매크로)
주황색 M: 일반 매크로 함수
파란색 M: Pure 매크로 함수 (상태 변경 없음)
다른 주요 노드 아이콘들
F: 일반 함수
E: 이벤트
K: 커스텀 이벤트
G: 게이트 (Flow Control)
매크로(Macro)와 함수(Function)의 차이점
언뜻보면 두가지의 기능이 비슷하다고 생각이 들었다 그래서 두가지의 차이점을 찾아봤다
매크로
컴파일 시점: 호출되는 곳에 코드가 직접 복사됨 (인라인화)
성능: 약간 더 빠름 (함수 호출 오버헤드가 없음)
메모리: 코드가 복사되어 들어가므로 더 많은 메모리 사용
디버깅: 각 매크로 인스턴스를 개별적으로 디버깅해야 함
Override 불가능: 상속받은 블루프린트에서 오버라이드 할 수 없음
함수
컴파일 시점: 별도의 함수로 컴파일됨
성능: 함수 호출 오버헤드가 있음
메모리: 코드가 한 번만 저장되어 메모리 효율적
디버깅: 함수 자체를 디버깅하면 모든 호출에 적용
Override 가능: 상속받은 블루프린트에서 오버라이드 가능
Interface 구현 가능: 인터페이스 함수로 사용 가능
매크로와 함수의 실제 사용 케이스
매크로
1. 간단한 수학 계산
-벡터 정규화
-거리 계산
-간단한 수학 공식
2. 자주 반복되는 짧은 작업
-UI 값 포매팅
-데이터 변환
-간단한 조건 체크
3. 성능이 중요한 경우
-물리 계산
-파티클 효과 계산
-프레임마다 실행되는 로직
함수
1. 복잡한 게임 로직
-캐릭터 스킬 시스템
-인벤토리 관리
-퀘스트 시스템
2. 여러 곳에서 재사용되는 큰 기능
-세이브/로드 시스템
-네트워크 통신
-AI 행동 패턴
3. 확장성이 필요한 경우
-플레이어 상태 관리
-적 캐릭터 행동
-UI 시스템
매크로는 작고 단순하지만 자주 사용되는 연산에 함수는 복잡하고 재사용성이 높은 기능에 사용하는 것이 좋은 것 같다
반응형
'언리얼 > 문법' 카테고리의 다른 글
[Unreal5] 블루프린트 피격, UI (1) | 2024.11.21 |
---|---|
[Unreal5] 블루프린트 캐릭터 이동, 데이터 테이블 (1) | 2024.11.20 |
[Unreal5] Collision (3) | 2024.11.08 |
[Unreal5] 블루프린트 Structure(구조체),Vector, Location, Rotate (0) | 2024.11.07 |
[Unreal5] 블루프린트 객체 지향 프로그래밍의 주요 특성 ( 상속, 은닉, 다형 ) (8) | 2024.11.06 |