[이득우의 언리얼 C++ 게임 개발의 정석] Chapter 3. 움직이는 액터의 제작

수민·2023년 3월 14일
0
post-thumbnail

이득우의 언리얼 C++ 게임 개발의 정석을 읽고 개인 공부 목적으로 요약 정리한 글입니다!

구매링크

👀 로깅 환경의 설정

매크로 UE_LOG 사용
UE_LOG(카테고리, 로깅 수준, 형식 문자열, 인자 ... )

Saved/Logs/ 폴더에 이렇게 로그들이 파일로 저장된다.

언리얼의 출력 로그 윈도우에서도 확인할 수 있다.


👀 액터의 주요 이벤트 함수

개념

이벤트 함수 : 언리얼 엔진에 의해 자동으로 호출되는 중요한 함수

  • PostInitializeComponents : 액터에 속한 모든 컴포넌트의 세팅이 완료되면 호출
  • BeginPlay : 액터가 게임에 참여할 때 호출
  • Tick : 매 프레임마다 호출
  • EndPlay : 액터가 게임에서 퇴장할 때 호출

이들은 Actor 클래스에 가상함수로 선언되어 있다.

상속받은 자식 클래스 (내가 생성한 클래스들)가 게임에 필요한 로직을 구현할 때
그보다 먼저 부모 클래스 함수에 있는 중요한 로직을 실행해야 한다!

void AMyCharacter::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);					// 부모 클래스의 Tick 먼저 호출
    ...										// 이후 로직 구성
}

👀 움직이는 액터의 설계

UPROPERTY 매크로 키워드

  • VisibleAnywhere
    : 에디터에서 볼 수 있지만, 해당 속성의 데이터를 변경할 수 없다.
    but 객체 유형의 경우 객체에 속한 속성들을 보여주고 편집할 수 있다!

  • EditAnywhere
    : 에디터에서 볼 수 있고, 속성을 편집할 수 있다.

  • AllowPrivateAccess (META 키워드)
    : 편집함과 동시에 변수 데이터 은닉 가능 -> 캡슐화
    (EditAnywhere + Private)

class HUNT_PROTOTYPE_API AMyCharacter : public ACharacter
{
	GENERATED_BODY()
		
public:
	UPROPERTY(VisibleAnywhere, Category = Movement)
		class UFloatingPawnMovement* Movement;

	UPROPERTY(VisibleAnywhere, Category = Camera)
		class UCameraComponent* Camera;

	UPROPERTY(EditAnywhere, Category = ID)
		int32 ID;

private:
	UPROPERTY(EditAnywhere, Category = Stat, Meta = (AllowPrivateAccess = true))
		float RotateSpeed;

👀 무브먼트 컴포넌트의 활용

개념

무브먼트 컴포넌트 (Movement Component) : 액터의 움직임에 대한 것을 책임진다.
액터는 무브먼트 컴포넌트가 제공하는 이동 메커니즘에 따라 움직인다.
액터의 현재 위치와 관계없이 액터에 지정된 움직임 기능을 제공

언리얼 엔진이 제공하는 무브먼트 컴포넌트들

  • FloatingPawnMovement
    중력의 영향을 받지 않는 액터의 움직임 (입력에 따라 자유롭게 움직임)

  • RotatingMovement
    지정한 속도를 액터를 회전

  • InterpMovement
    지정한 위치로 액터를 이동

  • ProjectileMovement
    액터에 중력을 받아 포물선을 그리는 발사체의 움직임 (총알, 미사일 등)


👀 액터 제거

탐색기의 Source 폴더에서 관련 파일을 지우고 다시 VS 프로젝트를 재생성한다.


profile
우하하

0개의 댓글