오늘
C++와 Unreal Engine으로 3D 게임 개발 챕터 1 정리 완료
C++와 Unreal Engine으로 3D 게임 개발 1-1
1-1. 언리얼 엔진 C++ 개발 환경 준비하기코드 편집기 설정 Unreal Engine 실행 후 Edit → Editor Preferences → General 쪽에서 Source CodeSource Code Editor 에 Visual Studio 버전이 맞는지 확인하기 Visual Studio 열기 Too
jh009.tistory.com
C++와 Unreal Engine으로 3D 게임 개발 1-2
1-2. 언리얼 엔진 C++ 빌드 프로세스 이해하기 Visual Studio → Solution Explorer 확인 Visual Studio 상에 보이는 파일 구조 → Solution 구조 Engine 폴더언리얼 엔진 자체 소스 코드와 리소스가 담긴 곳에디터
jh009.tistory.com
C++와 Unreal Engine으로 3D 게임 개발 1-3
1-3. C++ Actor 클래스 생성 및 삭제하기프로젝트에 리소스 MigrateResources 폴더 우클릭 → Migrate 선택 Migrate선택한 에셋 (또는 폴더) 이 참조하고 있는 모든 종속 파일을 함께 복사해줌 → 누락 없이 옮
jh009.tistory.com
C++와 Unreal Engine으로 3D 게임 개발 1-4
1-4. Actor 클래스에 컴포넌트 추가하기1. Actor 클래스 코드 구조 이해하기 .h 파일 상단 코드// 동일 헤더가 프로젝트 곳곳에서 여러 번 포함되더라도 컴파일러가 한 번만 처리#pragma once // 언리얼에
jh009.tistory.com
C++와 Unreal Engine으로 3D 게임 개발 1-5
1-5. 언리얼 엔진 Actor의 라이프 사이클 이해하기1. Actor 클래스에 로그 (Log) 추가하기 BeginPlay() 함수에 로그 추가하기 Item.h #pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Item.generated.h"U
jh009.tistory.com
C++와 Unreal Engine으로 3D 게임 개발 1-6
1-6 : Tick 함수로 Actor의 Transform 조정하기1. Transform 속성 이해하기 Actor와 Transform 액터의 세 가지 속성 (Transform)- 뷰포트 상에서 x축 (빨간색), y축 (초록색), z축 (파란색)으로 표시 1. 위치(Location)- 액
jh009.tistory.com
C++와 Unreal Engine으로 3D 게임 개발 1-7
1-7. C++ 클래스와 리플렉션 시스템 활용하기1. 리플렉션 시스템 이해하기 Blueprint (시각적 스크립팅) 이해 장점즉각적인 테스트 가능초급자도 쉽게 접근할 수 있음단점노드 수가 많아지면 → 그래
jh009.tistory.com
[3번 과제] 회전발판과 움직이는 장애물
필수 기능 가이드


1. 퍼즐 오브젝트 설계
스테이지 테마를 중세시대 던전과 술집 느낌으로 설정




2. 서로 다른 Actor 클래스 2개 이상 구현
- 각 StaticMeshComponent 포함 맵에 배치 가능한 형태
- 두 클래스는 서로 다른 동작 로직(회전용 / 이동용 등) 수행
회전용 RotatingActor 와 이동용 MovingActor 로 총 두 클래스를 만들었음

3. Tick 함수 기반 동적 Transform 변경
회전 기능 (Rotating Actor)
- Tick(float DeltaTime) 에서 AddActorLocalRotation()로 매 프레임 회전 적용
이동 기능 (Moving Platform Actor)
- Tick(float DeltaTime) 에서 위치를 변경하여 왕복 이동 구현
- StartLocation (시작 위치) 저장/기준점으로 사용
- MoveSpeed (이동 속도) 적용
- MaxRange (왕복 범위) 기준으로 이동 제한
프레임 독립성
- 이동/회전 시 반드시 DeltaTime 을 활용
회전 기능 (Rotating Actor)
RotatingActor.h

RotatingActor.cpp

이동 기능 (Moving Platform Actor)
MovingActor.h

MovingActor.cpp

4. 리플렉션 적용
- 주요 변수 (회전 속도, 이동 속도, 이동 범위 등)를 UPROPERTY로 선언하여 에디터에서 조정
- EditAnywhere, BlueprintReadWrite, Category 등을 활용하여 Details 패널에서 편집 가능하게 만들기
언리얼 에디터와 블루프린트에서 둘 다 Details 패널에서 편집 가능하게 설정


5. 오브젝트 배치 및 테스트
- 레벨에 제작한 회전 발판과 이동 플랫폼을 여러 개 배치
- 각각 다른 속도, 이동범위, 회전값 적용
- 플레이 모드에서 오브젝트가 의도대로 움직이는지 확인
- 속도 변경이 실시간 반영되는지 확인
회전 기능 (Rotating Actor)
왼쪽부터 Rotation Speed를 각각 100, 300, 500 으로 설정

이동 기능 (Moving Platform Actor)
왼쪽 오브젝트
Move Speed: 300
Max Range: 500
오른쪽 오브젝트
Move Speed: 100
Max Range: 300



테스트까지 완료.
오늘의 핵심 키워드
배운내용 : 리플렉션 (Reflection)
- 언리얼 엔진의 UPROPERTY() 매크로를 사용하여 C++ 코드로 작성한 변수를 엔진 에디터에 노출하는 방법을 배웠다.
사용 이유
- C++ 클래스 내의 변수를 에디터(Details 패널)에서 즉각적으로 수정할 수 있게 만들기 위해서 쓴다.
어떻게 사용 했는지
- UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "...") 를 통해서 변수의 접근 권한을 설정했다.
- Category를 이용해 에디터 내에서 변수들을 폴더별로 깔끔하게 정리할 수 있었다.
사용 결과
- 코드 재컴파일 없이 에디터에서 MoveSpeed나 RotationSpeed 값을 변경하며 즉시 테스트할 수 있게 되어 작업 효율이 향상되었다.
배운 내용: 프레임 독립성 (Frame Independence)
- 프레임 속도에 상관없이 액터의 움직임을 일정하게 보장하는 DeltaTime의 개념과 활용법을 익혔다.
사용 이유
- DeltaTime 없이 단순히 매 프레임마다 값을 더하면, 사양이 좋은 컴퓨터에서는 너무 빨리 움직이고, 사양이 나쁜 컴퓨터에서는 너무 느리게 움직이는 문제가 발생한다.
어떻게 사용 했는지
- Tick(float DeltaTime) 함수에서 제공하는 DeltaTime 값을 이동/회전 연산에 곱해 주었다.
- 변화량 = 속도 * DeltaTime
- 매 프레임 발생하는 DeltaTime을 반영하여, 프레임이 낮을 때는 더 많이, 프레임이 높을 때는 더 적게 이동하도록 보정하였다.
사용 결과
- 하드웨어 성능과 관계없이 모든 환경에서 1초 당 이동 및 회전 거리가 동일해졌다.
- 의도한 속도로 일관된 게임 플레이 경험을 보장
회고
언리얼 C++을 공부하며 헷갈리는 부분이 많아 이해하는 데 꽤나 시간이 걸렸다.
리플렉션과 프레임 독립성 같은 핵심 원리를 직접 코드로 구현해보며 엔진이 어떻게 데이터를 관리, 동작하는지 조금은? 알 것 같다.
과제 3번을 빠르게 완료하여 마감일까지 여유가 생겼다.
시간이 남은 만큼, 오늘 구현한 로직들이 엔진의 다른 부분과 어떻게 연결되는지 강의를 다시 수강하며 복습하는 데 쓸 예정이다.
특히 컴포넌트 관리나 블루프린트와의 연동 부분은 반복 학습이 필요하다.
진행 상황:
- [과제 3번] 완료
- [과제 4번] 미완료 (18일 마감)
'본 캠프 TIL' 카테고리의 다른 글
| 26.06.10 TIL / 강의 정리, 과제 3번 복습 (0) | 2026.06.10 |
|---|---|
| 26.06.09 TIL / AI 튜터 리뷰 노트, 기초반 1강 강의 정리 (0) | 2026.06.09 |
| 2026.06.05 TIL / C++Unreal Engine 강의 정리 (0) | 2026.06.05 |
| 26.06.04 TIL / 채용 공고 분석, 언리얼 엔진 C++ 강의 (0) | 2026.06.04 |
| 26.06.02 TIL / 커리어데이 2일차 (0) | 2026.06.02 |