1. 유닛 & 컨트롤러 구조 (다형성 설계)
핵심은 컨트롤러는 유닛의 "종류"를 몰라도 된다는 것.
구조
- 부모 클래스: ATWHeroUnitBase
- 자식 클래스: 투사체형 / 범위형 등
설계 방식
class ATWHeroUnitBase : public AActor
{
public:
virtual void UseSkill(FVector TargetLocation);
virtual bool IsIndicatorRequired() const;
};
ATWHeroUnitBase* Hero = Cast<ATWHeroUnitBase>(SelectedUnit);
Hero->UseSkill(ClickLocation);
포인트
- 컨트롤러에 분기 없음 (if/switch 제거)
- 새로운 영웅 추가 → 컨트롤러 수정 없음
- 완전한 다형성 구조
신호등 함수 (Indicator 분기 제거)
if (Hero->IsIndicatorRequired())
{
ShowIndicator();
}
- 유닛이 “내가 타게팅 필요한지” 직접 판단
- 컨트롤러 책임 ↓
- 확장성 ↑
2. 스킬 로직 vs 연출 분리
문제
- 매번 액터 Spawn → 비용 큼 / 관리 어려움
해결
- 로직: 타이머
- 연출: Debug Draw (임시)
데이터 기반 설계
USTRUCT()
struct FHeroData
{
TSubclassOf<AActor> SkillAreaClass;
};
- 스킬 정보는 DataTable에서 관리
- 코드 수정 없이 확장 가능
3. 시간차 스킬 구조 (타이머)
구조
- 예고 (충전)
- 폭발 (판정)
- 여운 (이펙트)
코드
// 1. 예고
DrawDebugCircle(GetWorld(), Loc, Radius, 50, FColor::Green, false, 3.0f);
// 2. 폭발 예약
GetWorldTimerManager().SetTimer(TimerHandle, [this, Loc]()
{
// 실제 판정 위치 유지됨 (람다 캡처)
// TODO: 데미지 처리
DrawDebugCircle(GetWorld(), Loc, Radius, 50, FColor::Red, false, 1.0f);
}, 3.0f, false);
핵심 포인트
- [this, Loc] 캡처 → 클릭 당시 위치 유지
- 액터 없이도 스킬 흐름 구현 가능
- 상태 머신 없이 간단하게 시퀀스 구성
4. DrawDebugCircle 핵심
DrawDebugCircle(
GetWorld(),
Loc,
Radius,
50,
FColor::Green,
false,
3.0f,
0,
2.0f,
FVector(0, 0, 1) // 중요
);
중요 파라미터
- Normal: (0,0,1) → 바닥 기준 원
- Segments: 32~50 → 원 부드러움
- LifeTime:
- -1 → 1프레임
- 0 → 유지 시간
트러블슈팅
- 원이 선처럼 보임 → Normal 값 문제 100%
5. 현재 구조의 장점
- 컨트롤러 수정 없이 영웅 추가 가능
- 스킬 흐름을 타이머로 단순화
- 초기 단계에서 빠른 검증 가능
- 불필요한 Spawn 제거 → 성능 + 개발 속도 확보
6. 다음 단계 (실전 로직)
TArray<AActor*> HitActors;
UKismetSystemLibrary::SphereOverlapActors(
GetWorld(),
Loc,
Radius,
ObjectTypes,
AMonster::StaticClass(),
IgnoreActors,
HitActors
);
- 태그 기반 필터링
- 실제 데미지 적용
- 팀 판정 추가 필요
'내배캠 TIL' 카테고리의 다른 글
| [내배캠 TIL 260430] C++ 숫자 짝꿍 (빈도수 배열 최적화) (0) | 2026.04.30 |
|---|---|
| [내배캠 TIL 260415] Unreal 미니맵 카메라 프러스텀 투영 및 클릭 이동 구현 (0) | 2026.04.15 |
| TIL - Unreal Engine 미니맵 구현 (0) | 2026.04.13 |
| [내배캠 TIL 260406] Unreal Fog of War 서버연동 정리 (0) | 2026.04.06 |
| [ 내배캠 TIL 260403] Unreal RenderTarget 기반 Fog of War 구현 (0) | 2026.04.03 |