2026/02 6

[TIL]UE 5 '신의 심판' 스킬 시스템 구현

1. 작업 개요목표: 광역 범위 내 적에게 순차적/동시적 대미지를 입히는 액티브 스킬 '신의 심판' 구현.핵심 기술: C++, Overlap Multi, Timer Manager, UE Reflection (UPROPERTY/UFUNCTION).2. 주요 구현 내용 및 기술적 의사결정✅ 언리얼 엔진 코딩 표준 준수모든 변수와 클래스 명명 규칙을 엄격히 준수함.bIsCasting: Boolean 접두사 b 사용.ASkillActor: Actor 클래스 접두사 A 사용.PascalCase: 멤버 변수 및 함수명에 파스칼 케이스 적용.✅ 성능 최적화를 위한 설계Tick() 사용 지양: 매 프레임 검사하는 Tick 대신, 특정 시점에만 충돌을 검사하는 GetWorld()->OverlapMultiByChannel..

[TIL] UE 5 스킬 시스템 핵심 로직 - 스왑 및 장착 메커니즘

1. 핵심 설계 원칙Single Source of Truth: 모든 데이터는 컴포넌트 내의 TArray 혹은 TMap에서 관리하며, UI는 이를 관찰(Observe)하여 출력만 수행합니다.Defensive Programming: 잘못된 인덱스, 유효하지 않은 스킬 ID, 중복 장착 시도를 로직 입구에서 return으로 차단합니다.2. 상세 코드 구현 (C++)① 중복 장착 방지 및 인벤토리 → 슬롯 배치인벤토리에서 스킬을 끌어다 놓을 때, 이미 다른 슬롯에 해당 스킬이 있는지 검사하는 것이 핵심입니다.C++ /** * 인벤토리에서 슬롯으로 스킬을 장착합니다. * @param SkillID 인벤토리에서 선택한 스킬의 고유 ID * @param TargetSlotIndex 장착하고자 하는 퀵슬롯의 번호 (0..

[TIL] UE5 콜리젼 & 오버랩 초기화 순서에 따른 이슈

1. 문제 상황 (The Problem)현상: 공격 애니메이션 시 노티파이를 통해 무기 콜리젼을 QueryOnly로 켰음에도 불구하고, 몬스터와의 오버랩(Overlap) 이벤트가 전혀 발생하지 않음.특이사항: 에디터에서 처음부터 콜리젼을 켜두면 잘 작동하지만, NoCollision으로 시작하면 코드로 켜도 반응이 없음.2. 핵심 원인 분석 (Technical Insight)언리얼 엔진의 물리 시스템은 성능 최적화를 위해 '규칙(Rule)'과 '상태(State)'를 엄격히 구분합니다.에디터 설정의 함정: 프리셋을 NoCollision으로 설정하면, 엔진은 "이 물체는 물리 연산이 필요 없다"고 판단하여 오버랩 감지를 위한 내부 데이터를 아예 로드하지 않거나 물리 업데이트 목록에서 제외합니다.런타임 제어의 ..

[TIL] UE5 컴포넌트 기반 스킬/아이템 슬롯 시스템 설계 및 구현

🚀 요약: 컴포넌트 기반 스킬/아이템 슬롯 시스템 설계 및 구현오늘은 유연한 전투 시스템 구축을 위해 Enhanced Input과 ActorComponent 간의 상호작용 로직을 설계했습니다. 특히, 직업별로 달라질 수 있는 스킬 구조를 컴뱃 컴포넌트에서 통합 관리하도록 구현하여 확장성을 확보했습니다. 1. 시스템 구조 설계 (Architecture)단순한 기능 구현을 넘어, 각 클래스의 역할을 명확히 분리(Decoupling)했습니다.T3PlayerController: 사용자 입력을 받아 CombatComponent의 적절한 명령 함수로 전달.T3CombatComponent (Control Tower): 현재 선택된 스킬/아이템/포션 슬롯 번호(State)를 관리하고, 실제 실행 주체에게 명령을 위임..

[TIL] Unreal Engine 5: 동적 록온 시스템 및 적응형 카메라 연출

1. 개요 (Overview)목표: 록온 시 대상이 공중에 뜨거나 거리가 변함에 따라 플레이어와 대상이 모두 한 화면에 담기도록 카메라를 동적으로 조절하는 시스템 구축.핵심 문제: 단순 고정 록온 시 타겟이 화면 밖으로 이탈하거나, 캐릭터가 화면 하단에 잘리는 시각적 답답함 발생.2. 기술적 해결 과정 (Step-by-Step)2.1 타겟 조준점(Lock-On Point)의 정교화문제점: GetActorLocation()(Pivot)에 단순히 값을 더해버리면, 보스의 머리 위 허공을 보게 되어 시점이 위로 쏠림.해결책: 대상의 발바닥(Foot) 위치를 계산한 뒤, CapsuleHalfHeight를 기준으로 정교한 비율 보정 적용. // 발바닥을 기준으로 타겟의 30% 높이 지점을 조준float FootZ..

[TIL] UE5 C++: 캐릭터 강제 이동 및 회전 시스템 구현 (애니메이션 동기화 및 물리적 궤도 이탈 해결)

📌 개요게임 내 연출이나 특정 기믹을 위해 플레이어의 조작권을 회수하고 캐릭터를 특정 지점으로 이동시킨 뒤, 특정 타겟(예: 보물상자)을 바라보게 하는 시스템을 구축했다. 구현 과정에서 발생한 애니메이션 미재생, 물리적 궤도 이탈, 회전축 간섭 문제를 해결한 과정을 상세히 기록한다.🚀 1. 1차 시도: 단순 좌표 이동과 "얼어붙은 캐릭터"[구현 방법]FMath::VInterpConstantTo를 이용해 매 프레임 캐릭터의 좌표(SetActorLocation)를 강제 갱신.SetIgnoreMoveInput(true)를 호출하여 플레이어의 WASD 입력을 차단.[직면한 문제: 애니메이션 미재생]현상: 캐릭터가 목적지로 이동은 하지만, 다리가 움직이지 않고 'Idle' 상태나 'T-Pose'로 미끄러지듯 ..