포스트

UE5 C++ | Obstacle Assault, 멤버 함수와 섹션 마무리 (유데미)

언리얼 강의 중 Section 3를 정리한 마지막 글입니다.

UE5 C++ | Obstacle Assault, 멤버 함수와 섹션 마무리 (유데미)

강의 정보 🎓


멤버 함수 🧩

  • 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을 생성해 블루프린트로 테스트 하자.

BP_RotationPlatform.png


레벨 디자인 및 다듬기 🧱

가능한 요소

  • 이동 / 회전 플랫폼
  • 상하 / 좌우 이동
  • 밀거나 운반하는 구조
  • 선형 구조 or 분기 없는 경로 등

아이디어 스케치(브레인스토밍) → 한 장 범위 내 설계 → 구현하면서 조정하는 방식 추천

강의에서는…

  • 계단을 만들어 넣으려 하였으나 오를 수가 없었다.
    • 캐릭터의 Character Movement의 Details를 보면 Character Movement:Walking 을 볼 수 있다.
    • Floor Angle을 조절해야한다. → 각도를 올리면 올라가는 것을 확인할 수 있다.
  • BP_Sweeper를 추가하였다.
  • Outliner의 Castle 폴더 우클릭 → Select → All Descendants를 선택하면 모든 Castle이 선택된다.
  • 이후 필요한 곳으로 옮겨준다.

나의 레벨…

  • 추가로 낙하시 레벨을 다시 시작하게 블루프린트로 추가하였다.

MyLevel.png


장애물 공격: 마무리

  • C++ 클래스 구조 및 문법 이해
  • 멤버 변수, 멤버 함수 설계 및 분리
  • 블루프린트 하위 클래스 생성 방법 학습
  • UPROPERTY, UE_LOG, FString, FVector, FRotator 실습
  • GameMode, Character Class 설정과 활용

요약 및 느낀점 📝

  • 멤버 함수와 반환값, const 함수에 대해 다루었다.
  • FRotator 변수를 다루면서 회전을 다루어 보았다.
  • 레벨을 디자인 해보고 섹션을 마무리 하였다.

    느낀점 💡 세번째 섹션에서는 본격적으로 C++을 활용한 언리얼을 다루는 기초를 배웠다. 쉬운 내용이기는 했지만 이를 바탕으로 다음 섹션도 열심히 해야겠다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.