전체 글 51

Unreal 응용반 분반수업 4차 내용정리

1. ControlRotation 복습PlayerController는 플레이어가 바라보거나 조준하고 있는 방향을 ControlRotation으로 가지고 있다.bUseControllerRotationYawAPawn에 있는 옵션이다.true로 설정하면 Pawn의 Yaw가 Controller의 ControlRotation.Yaw를 따라간다.ControlRotation.Yaw ↓Character Actor Yaw주로 캐릭터가 카메라 또는 조준 방향을 따라가야 하는 경우 사용한다.예:FPSTPS 조준 모드캐릭터와 조준 방향을 일치시키는 방식bUseControllerDesiredRotationUCharacterMovementComponent의 옵션이다.활성화하면 CharacterMovement가 Con..

카테고리 없음 2026.09.17

TIL-2nd. 팀프로젝트 DreamProtector (8/21)WaveManager 웨이브 종료 처리 및 4차 분반수업 내용 정리

오늘은 기존에 구현해둔 WaveManager에 웨이브 종료 시 남아있는 악몽을 침대에 데미지로 반영하고, HUD의 악몽 수를 초기화하는 기능​을 추가했다.기존 웨이브 시스템은 CurrentMonsterCount와 KilledMonsterCount를 이용해서 현재 웨이브의 남은 악몽 수를 계산하고 있었다.const int32 RemainingCount = FMath::Max(CurrentMonsterCount - KilledMonsterCount, 0);RemainingCount를 계산한 이유현재 웨이브의 전체 악몽 수에서 처치한 악몽 수를 빼면 남아있는 악몽 수를 알 수 있다.전체 악몽 수 - 처치한 악몽 수 = 남은 악몽 수예를 들어 45마리가 스폰되고 30마리를 처치했다면:45 - 30 = 15..

카테고리 없음 2026.09.17

TIL-2nd. 팀프로젝트 DreamProtector (7/21) SpawnVolume / WaveManager 수

1. SpawnVolume과 WaveManager의 역할 확인현재 프로젝트에서는 ASpawnVolume이 몬스터를 직접 생성하는 것이 아니라, 스폰 영역 안의 랜덤한 위치를 반환하는 역할을 담당하고 있다.FVector ASpawnVolume::GetRandomSpawnLocation() const{ const FVector Origin = SpawnBox->GetComponentLocation(); const FVector Extent = SpawnBox->GetScaledBoxExtent(); return Origin + FVector( FMath::FRandRange(-Extent.X, Extent.X), FMath::FRandRange(-Extent.Y, E..

카테고리 없음 2026.09.15

TIL-2nd. 팀프로젝트 DreamProtector (6/21) WaveManager / SpawnVolume 웨이브 시스템 구현

1. 오늘 구현한 것오늘은 WaveManager를 중심으로 게임의 웨이브 시스템 기본 구조를 구현했다.구현한 기능은 다음과 같다.SpawnVolume 구현WaveData 구조체 구현DataTable을 이용한 웨이브 데이터 관리현재 웨이브 데이터 가져오기웨이브별 몬스터 수 계산몬스터 스폰SpawnVolume을 이용한 랜덤 스폰 위치 지정튜토리얼 30초 대기Wave별 제한시간 설정웨이브 종료 후 45초 대기다음 웨이브 자동 시작최대 웨이브 이후 더 이상 웨이브가 진행되지 않도록 처리빌드 오류 트러블슈팅현재 기획은 다음과 같다.구분몬스터 수SpawnVolume제한시간Wave 130마리2개60초Wave 245마리3개90초Wave 360마리4개90초튜토리얼은 30초이며, 웨이브 사이에는 45초의 대기시간을 둔다...

카테고리 없음 2026.09.14

TIL-2nd. 팀프로젝트 DreamProtector (2/21) 업무 재분배 및 몬스터 클래스 구현

오늘 한 일한분이 이탈함에 따라 업무를 재조정했고, 그에 따라 몬스터 부분을 팀원분과 함께 진행하게 되었다. 우선 작업 진행 전 다이어그램으로 구조와 필요 기능을 정리해 보았다. 오늘은 몬스터의 공통 기능을 담당하는 BaseMonster를 만들고, 이를 상속받는 Suicide 몬스터의 기본 구조를 구현했다.1. BaseMonster 클래스 구현플레이어와 몬스터의 역할을 분리하면서, 몬스터마다 공통적으로 필요한 기능을 BaseMonster에서 관리하도록 구성했다.ACharacter ↓ABaseMonster ↓각종 몬스터BaseMonster에는 모든 몬스터가 공통적으로 사용할 수 있는 기능을 넣었다.주요 스탯MaxHealth : 최대 체력CurrentHealth : 현재 체력AttackDamag..

카테고리 없음 2026.09.08

TIL-2nd. 팀프로젝트 DreamProtector (1/21) 팀 회의 내용 및 이슈 해결

1. 오늘 작업 내용이번 팀 프로젝트의 전체 게임 기획을 정리하고, 내가 담당하게 된 Map / Spawn / WaveManager 파트의 구현 방향을 구체화했다.게임의 전체적인 컨셉은 **「Dream Protector」**이다.아이가 잠든 밤, 장난감이 깨어나 아이의 꿈을 지키고 악몽을 해결하는 게임.현실에 나타난 악몽으로부터 아이를 보호하고, 이후 꿈속으로 직접 들어가 악몽의 근원을 제거하는 싱글 플레이 TPS PVE 게임을 목표로 한다.2. 게임의 핵심 컨셉게임은 크게 두 가지 플레이 경험으로 구성된다.Stage 1 — 아이의 방아이를 악몽으로부터 보호하는 디펜스 플레이아이의 침대 주변을 방어여러 방향에서 악몽이 등장웨이브가 진행될수록 SpawnVolume이 증가등장하는 몬스터의 종류와 수가 증가플..

카테고리 없음 2026.09.07

Unreal C++ TIL — 3차 분반수업

1. UPrimitiveComponent언리얼에서 Actor를 구성하는 Component를 공부하면서 UPrimitiveComponent에 대해 배웠다.UPrimitiveComponent는 렌더링이나 충돌 등의 물리적 기능을 가질 수 있는 Component의 기반 클래스이다.대표적으로 우리가 자주 사용하는UStaticMeshComponentUSkeletalMeshComponentUBoxComponentUSphereComponentUCapsuleComponent등이 UPrimitiveComponent를 상속한다.대략적인 관계는 다음과 같다.UObject └─ UActorComponent └─ USceneComponent └─ UPrimitiveComponent └..

카테고리 없음 2026.09.03

Unreal C++ TIL — 지뢰 피하기 게임 3-4📚 — 캐릭터 체력 시스템 & 아이템 상호작용

1. 캐릭터 체력 시스템이번에는 캐릭터에게 최대 체력과 현재 체력을 만들어주었다.Header // 최대 체력UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Health")float MaxHealth;// 현재 체력UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Health")float Health; 내가 이해한 것 MaxHealth → 캐릭터가 가질 수 있는 최대 체력 Health → 현재 캐릭터가 가지고 있는 실제 체력예를 들어:MaxHealth = 100Health = 100 상태에서 데미지를 30 받으면:MaxHealth = 100Health = 70 이 된다.2. 생성자에서 체력 초기화 M..

카테고리 없음 2026.08.24

Unreal C++ TIL — 지뢰 피하기 게임 3-3 (DataTable과 랜덤 아이템 스폰 시스템 구현)

1. 오늘 학습한 내용오늘은 기존에 구현했던 아이템 시스템에서 한 단계 더 나아가 DataTable을 이용한 아이템 데이터 관리와 랜덤 스폰 시스템을 구현해보았다.이번 작업에서는 크게 다음 내용을 다뤘다.FTableRowBase를 상속받은 아이템 데이터 구조체 생성USTRUCT(BlueprintType)를 이용한 구조체의 언리얼 엔진 및 블루프린트 인식TSubclassOf를 이용한 아이템 클래스 지정UBoxComponent를 이용한 스폰 영역 설정스폰 영역 내부의 랜덤 좌표 계산SpawnActor()를 이용한 액터 생성DataTable을 이용한 아이템 데이터 관리2. ItemSpawnRow 구조체먼저 DataTable의 한 행에 들어갈 데이터를 정의하기 위해 FItemSpawnRow 구조체를 만들었다.U..

카테고리 없음 2026.08.21

Unreal C++ TIL — 지뢰 피하기 게임 3-2 (아이템 상속 구조와 virtual / override)

Date: 2026.08.20오늘 배운 것Unreal C++에서 아이템 클래스의 상속 구조 구현ActorHasTag("Player")를 이용한 플레이어 판별GEngine->AddOnScreenDebugMessage()를 이용한 디버깅부모 클래스의 함수를 자식 클래스가 상속받아 사용하는 과정virtual과 override의 관계자식 클래스에서 함수를 재정의하면 부모의 기능이 가려질 수 있다는 것공통 기능은 부모 클래스에 작성하고, 자식 클래스에서는 필요한 값만 변경하는 구조1. 아이템 클래스의 기본 상속 구조오늘 만든 아이템 구조는 다음과 같다.ABaseItem │ ├── AMineItem │ ├── AHealingItem │ └── ACoinItem │ ├── ABigCoinItem ..

카테고리 없음 2026.08.20