폴더 정리
BP_PlayerCharacter → Characters/Player/로 이동

Characters 폴더 우클릭 → Update Redirector References
폴더를 나눠서 관리하는 이유:
나중에 몬스터도 추가될 예정이기에 미리 분리해놓으면 헷갈리는 일이 줄어듦

UPlayerInputConfigDataAsset C++ 클래스 만들기
New C++ Class → DataAsset 생성 → 이름설정 PlayerInputConfigDataAsset

PlayerInputConfigDataAsset.h 내용 추가

DA_PlayerInputConfig 인스턴스 만들기
Content/Input → Miscellaneous → Data Asset → 이름 설정 DA_PlayerInputConfig


DA_PlayerInputConfig → Context, Actions 설정

PlayerCharacter.h
InputMappingContext, Move, Look, Jump 삭제

PlayerInputConfig 추가

PlayerCharacter.cpp
#include "PlayerInputConfigDataAsset.h" 추가

BeginPlay 수정

SetupPlayerInputComponent 수정

BP_PlayerCharacter 슬롯 갱신
Player Input Config → DA_PlayerInputConfig 할당 → PIE 테스트 진행

총기 시스템 기초 / 메시 컴포넌트 + 무기 데이터
FPS_Weapon_Bundle 다운

언리얼 에디터 → Fab으로 접속할 때 가끔 로그인이 풀리는 경우가 있음 → 그럴 경우 다운이 아예 안되는 경우가 있으니 주의

External 폴더 → Move Here → External 폴더 Update Redirector References

FPS_Weapon_Bundle 삭제
언리얼 에디터, 폴더 안에 있는 FPS_Weapon_Bundle 탐색기로 들어가서 수동으로 삭제하기


삭제 후 Content 폴더 확인

EquippedWeaponMesh 컴포넌트 추가
무기 메시를 들고 다닐 슬롯 1개를 캐릭터에 추가
PlayerCharacter.h

PlayerCharacter.cpp

BP_PlayerCharacter → EquippedWeaponMesh 생성되었는지 확인

UWeaponDataAsset C++ 클래스 만들기
New C++ Class → DataAsset 생성 → 이름설정 WeaponDataAsset

WeaponDataAsset.h
BlueprintType → enum 타입을 블루프린트 변수나 핀 타입으로 쓸 수 있게 노출하는 지정자
FTransform = Location + Rotation + Scale 을 한 묶음으로 담는 구조체
FTransform::Identity → 추가 보정 없음 (기본값)
- Location (0,0,0)
- Rotation (0,0,0)
- Scale (1,1,1)

DA_Weapon_Sniper / Grenade / Machine 인스턴스 만들기
1. Content 파일에 Weapons 폴더 생성
2. Miscellaneous → Data Asset → 부모 WeaponDataAsset 3개 생성

이름 설정 DA_Weapon_Grenade / DA_Weapon_Machine / DA_Weapon_Sniper

WeaponType, Mesh, Damage 설정



무기 전환 입력
IA 3개 추가 (Sniper / Grenade / Machine)
| 에셋 이름 | Value Type |
| IA_Sniper | Digital (bool) |
| IA_Grenade | Digital (bool) |
| IA_Machine | Digital (bool) |

IMC 키 매핑
IMC_PlayerInputMapping
A_Sniper → 키 1
IA_Grenade → 키 2
IA_Machine → 키 3

PIC에 슬롯 추가
PlayerInputConfigDataAsset.h

DA_PlayerInputConfig (IA_Sniper, IA_Grenade, IA_Machine 슬롯 채우기)

APlayerCharacter에 무기 전환 로직
PlayerCharacter.h


PlayerCharacter.cpp


BeginPlay 끝에 기본 무기 장착

SetupPlayerInputComponent 바인딩 추가

BP_PlayerCharacter에 DA 3개 할당
BP_PlayerCharacter Class Defaults → Weapon 카테고리에 에셋 할당

PIE 테스트 / 무기 전환
게임 플레이 시
1번 → Sniper (이미 들고 있음)

2번 → Grenade

3번 → Machine

메시가 손에서 어색하지 않게 DA_Weapon_ → AttachTransform 조정




발사 / 저격 라인 트레이스
IA_Fire 추가 / Value Type : Digital bool

IMC_PlayerInputMapping → Left Mouse Button → IA_Fire 매핑

PIC에 FireAction 추가
PlayerInputConfigDataAsset.h


APlayerCharacter → FireGun
PlayerCharacter.h

PlayerCharacter.cpp


SetupPlayerInputComponent 바인딩 추가

최종 PIE 테스트
이동: WASD / 마우스 시점
점프: Space
무기 전환: 1 (저격) / 2 (유탄) / 3 (머신건)
발사: 마우스 좌클릭
좌클릭 시 1번 무기 저격일때만 빨간 라인 + 충돌점 노란 구가 생기는 것을 확인 가

Output Log 창 바닥에 HIT 되어서 50의 데미지가 들어간 것을 확인

'기초반 강의' 카테고리의 다른 글
| 기초반 2강 / 캐릭터 만들기, 움직여보기 (0) | 2026.06.16 |
|---|---|
| 기초반 1강 / OT & 프로젝트 세팅 (0) | 2026.06.09 |