분류 전체보기 88

내일배움캠프_Unreal/TIL - Day 154 (260713)

대시 무적 + 스태미나 시스템 개편 - 흩어진 자원 로직을 설정 한 곳으로1. 대시 무적 — 새 시스템 대신 패리 윈도우 패턴을 빌려왔다회피에 무적을 넣는 방식은 여러 가지였는데, 이 프로젝트엔 이미 패리 윈도우가 같은 골격을 쓰고 있었다: AnimNotifyState가 몽타주 구간에서 활성 어빌리티의 hook을 부르고, 그 어빌리티가 GE로 상태 태그를 여닫는 구조. 무적도 결국 "몽타주의 특정 프레임 구간 동안만 상태 태그 부여"라 이 패턴을 그대로 빌려왔다.그래서 베이스 어빌리티에 패리 훅과 동형으로 무적 훅을 두고, GA_Dash가 override해 무적 GE를 여닫게 했다. 신규 AnimNotifyState_IFrameWindow는 특정 어빌리티를 몰라도 되게 활성 어빌리티에 hook만 라우팅한..

내일배움캠프_Unreal/TIL - Day 153 (260710)

밸런싱·캔슬·개발 편의 — 감도 단순화 · 스태프 프레일티 · PIE 인트로 스킵1. 감도 옵션 단순화 — 배타 모드를 걷어내고 X/Y만마우스 감도에 통합/세부 배타 모드가 들어가 있었다(통합=단일 값, 세부=X/Y 따로). 그런데 직접 눌러보니 "슬라이더 하나냐 둘이냐"를 고르자고 모드 플래그 + BP 통지 + 슬라이더 회색 처리 + 전용 핸들러 둘이 붙어 있었다. 기능 대비 UI·코드 표면이 과했다.정작 필요한 건 X/Y를 따로 만지는 것뿐이라, 통합 경로(bUseUnifiedSensitivity, 단일 MouseSensitivity, 그 클램프, 모드 핸들러)를 통째로 지우고 축별 값만 남겼다.// 곱셈도, 모드 분기도 없이 축별 값 그대로.const float SensitivityX = Setti..

내일배움캠프_Unreal/TIL - Day 153 (260709)

체감 및 타격감 변경 — 감도 · FOV · 전투 SFX · 히트 피드백1. 감도 — 곱셈 결합에서 배타(통합/세부) 모드로기존 마우스 감도는 실제 감도 = 통합 배율(Master) × 축별(X/Y) 구조였다. 둘 다 기본 1.0이라 평소엔 티가 안 났지만, X만 올리면 통합 배율까지 곱해져 사람이 예상한 값과 실제 감도가 어긋났다. 노브가 둘인데 서로 곱해지는 게 문제.❌ Before — 두 노브가 곱해짐const float Master = Settings ? Settings->MouseSensitivity : 1.f;const float SensitivityX = (Settings ? Settings->MouseSensitivityX : 1.f) * Master;const float Sensitivi..

내일배움캠프_Unreal/TIL - Day 152 (260708)

강제 리스폰과 낙하 정리 - 자기 피격이 '적중'으로 집계되던 버그1. 설계 결정 — 텔레포트를 새로 짜지 말고 "죽음"을 재사용플레이어를 마지막 체크포인트로 되돌리는 가장 쉬운 방법은 텔레포트지만, 즉시 텔레포트는 월드 파티션 스트리밍/로딩 커버를 안 거쳐 도착 지점이 로드되지 않은 채 스폰될 위험이 있음.그런데 이 게임엔 이미 사망 → Result → Retry → 체크포인트 리스폰 흐름이 있고, 여기엔 로딩 커버·스트리밍 보장이 전부 들어 있음. → 언스턱을 정규 사망 처리로 라우팅해서 그 흐름을 통째로 재사용.[UI Btn_Respawn] └→ PC::RequestUnstuck → Server_RequestUnstuck (클라 → 서버 RPC) └→ GameMode::Handle..

내일배움캠프_Unreal/TIL - Day 150 (260706)

언스턱(강제 리스폰) - 새 로직 대신 "정규 사망 흐름" 재사용1. KillOwner - Health를 직접 0으로 세팅해 사망을 "단일 소스"로 구동사망 파이프라인의 트리거는 결국 Health 0. 그래서 데미지 GE를 만들지 않고 어트리뷰트 베이스를 직접 0으로 세팅 → HandleHealthChanged가 나머지를 알아서 굴림.void URetrieveHealthComponent::KillOwner(){ if (!AbilitySystemComponent || !AttributeSet) return; if (bDeathStarted) return; // 이미 사망 처리 중이면 재진입 방지 // GE 파이프라인 우회 — ResetHealth와 동일 기법. Health 0 → GA_..

내일배움캠프_Unreal/TIL - Day 149 (260703)

Staff 전투 완성 - 얼음창 다중 투사체 · 지속 장판 · 부분 슈퍼아머 · 워프 옵션화1. Water Heavy 얼음창 - 다중 투사체 "동시 소환 → 개별 발사"3발이 머리 주변에 동시에 맺힌 뒤 각자 다른 타이밍에 날아가는 연출. 세 가지 장치가 필요했음.(a) 지연 발사 - 스폰 후 제자리에 떠 있다 발사ProjectileMovement의 속도를 0으로 두면 (중력 0 가정) 제자리에 뜬 채 대기 → 타이머로 저장한 방향에 발사.void AStaffProjectile::ArmDelayedLaunch(const FVector& Direction, float Speed, float Delay){ PendingLaunchDirection = Direction; PendingLaunchSpee..

내일배움캠프_Unreal/TIL - Day 148 (260702)

스태프 확장 - 부채꼴 판정 · 이벤트 착지 슬램 · 돌진 관통 · 원소 손 VFX1. 이벤트 기반 착지 슬램 - Tick 폴링이 아니라 LandedDelegate공중 버스트(WindBurst)가 바닥에 닿는 순간을 매 프레임 검사(Tick)로 잡지 않고, ACharacter::LandedDelegate에 바인딩해 콜백으로 받음.// ActivateAbility — 착지 슬램 버스트만 바인딩if (bLandingImpactEnabled){ AlsChar->SetSuppressLandingRoll(true); // §2 LandChar->LandedDelegate.AddDynamic(this, &ThisClass::HandleLanded); BoundLanded..

내일배움캠프_Unreal/TIL - Day 147 (260701)

Burst Phase Dash1. 이동 파라미터를 "행 단위"에서 "타격 단위(per-hit)"로 이관문제: 한 버스트 안에서 이동 페이즈를 못 나눔WindBurst는 "솟구쳐 오른 뒤 → 전방으로 다이브" 처럼 이동이 두 페이즈로 나뉨. 그런데 대시 값(거리/시간/상승)이 스킬 행(FSkillCombination)에 하나만 있어 한 세트밖에 못 씀.해결: 대시 값을 각 타격(FBurstHitInstance)으로 내림HitSequence의 HitIndex별로 다른 이동을 주도록 per-hit 오버라이드를 추가. HitIndex 0 = 순수 상승, HitIndex 1 = 전방+하강.// FBurstHitInstance (per-hit 오버라이드)bool bOverrideDashMotion = false;..

내일배움캠프_Unreal/TIL - Day 146 (260630)

GAS 이벤트 기반 패리 카운터 & 가드공격 Bounds화1. 패리 카운터 - 입력 게이팅에서 이벤트 트리거로문제: 카운터가 "상태 태그 + 재입력"에 묶여 있었음패리 성공 후 카운터를, State.Player.CanCounter 상태를 켜두고 플레이어가 Attack을 다시 눌러야 나가는 방식이었음.성공했는데 한 번 더 입력해야 하고, 그 사이 윈도우를 놓치면 불발.CanCounter 상태 부여/해제와 카운터 윈도우 GE(CounterWindowEffect)까지 관리해야 함 → 상태 머신이 무거움.해결: 패리 성공 순간 게임플레이 이벤트로 카운터 GA를 자동 발동카운터 GA가 특정 이벤트를 수신하면 스스로 발동하도록 트리거를 등록. 입력·상태가 아니라 이벤트가 발동 조건.❌ Before — 상태 태그로 ..

카테고리 없음 2026.06.30