UE5 C++ | Obstacle Assault, 멤버 함수와 섹션 마무리 (유데미)
언리얼 강의 중 Section 3를 정리한 마지막 글입니다.
UE5 C++ | Obstacle Assault, 멤버 함수와 섹션 마무리 (유데미)
강의 정보 🎓
- 강의명: Unreal Engine 5 C++ Developer: Learn C++ & Make Video Games
- 플랫폼: 유데미
- 현재 섹션: Section 3 - Obstacle Assault
- 주요 내용: 멤버 함수, FRotator, 레벨 디자인 방식과 섹션 마무리에 대해 다루었다.
멤버 함수 🧩
Tick()
함수 내부를 정리하기 위해 다음과 같은 private 멤버 함수를 추가함:MovePlatform(float DeltaTime)
RotatePlatform(float DeltaTime)
RotatePlatform
에서는 로그 출력 또는 회전 동작을 구현 가능
반환문 🔄
Before
1
2
3
4
5
if (DistanceMoved > MoveDistance)
{
...
}
After: 조건식을 함수로 대체
1
2
3
4
5
bool AMovingPlatform::ShouldPlatformReturn()
{
float DistanceMoved = FVector::Dist(StartLocation, GetActorLocation());
return DistanceMoved > MoveDistance;
}
GetDistanceMoved()
함수를 별도로 만들어 계산 로직 분리가 가능하다.- GetDistanceMoved 함수를 추가로 만들어 DistanceMoved 대신에 반환 값을 사용하도록 해보자.
Const 멤버 함수 🔒
1
2
3
4
5
bool AMovingPlatform::ShouldPlatformReturn() const
{
// 멤버 변수 수정 불가
// ex) MoveDistance = 200; 또는 SetActorLocation() → 컴파일 에러 발생
}
const
는 함수 내부에서 멤버 변수 불변성 보장
FRotator 🔁
- RotatePlatForm을 완성해 회전하는 플랫폼을 만들자.
GetActorRotation()
→ 현재 회전 상태(FRotator)를 반환한다.RotationVelocity
멤버 변수 정의 후 회전을 적용한다.
잘못된 방식
1
CurrentRotation += RotationVelocity * DeltaTime;
- 값 누적으로 인한 회전 뒤집힘 현상 발생 가능
올바른 방식
1
AddActorLocalRotation(RotationVelocity * DeltaTime);
- Detail 창에서
Rotation Velocity
값을 조정하며 실시간 테스트를 수행하였다. BP_RotationPlatform
을 생성해 블루프린트로 테스트 하자.
레벨 디자인 및 다듬기 🧱
가능한 요소
- 이동 / 회전 플랫폼
- 상하 / 좌우 이동
- 밀거나 운반하는 구조
- 선형 구조 or 분기 없는 경로 등
아이디어 스케치(브레인스토밍) → 한 장 범위 내 설계 → 구현하면서 조정하는 방식 추천
강의에서는…
- 계단을 만들어 넣으려 하였으나 오를 수가 없었다.
- 캐릭터의 Character Movement의 Details를 보면 Character Movement:Walking 을 볼 수 있다.
- Floor Angle을 조절해야한다. → 각도를 올리면 올라가는 것을 확인할 수 있다.
- BP_Sweeper를 추가하였다.
- Outliner의 Castle 폴더 우클릭 → Select → All Descendants를 선택하면 모든 Castle이 선택된다.
- 이후 필요한 곳으로 옮겨준다.
나의 레벨…
- 추가로 낙하시 레벨을 다시 시작하게 블루프린트로 추가하였다.
장애물 공격: 마무리
- C++ 클래스 구조 및 문법 이해
- 멤버 변수, 멤버 함수 설계 및 분리
- 블루프린트 하위 클래스 생성 방법 학습
UPROPERTY
,UE_LOG
,FString
,FVector
,FRotator
실습GameMode
,Character Class
설정과 활용
요약 및 느낀점 📝
- 멤버 함수와 반환값, const 함수에 대해 다루었다.
- FRotator 변수를 다루면서 회전을 다루어 보았다.
- 레벨을 디자인 해보고 섹션을 마무리 하였다.
느낀점 💡 세번째 섹션에서는 본격적으로 C++을 활용한 언리얼을 다루는 기초를 배웠다. 쉬운 내용이기는 했지만 이를 바탕으로 다음 섹션도 열심히 해야겠다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.