언리얼 엔진 공부하기#3 [UE5]

신지한·2024년 1월 23일
0

개발노트

목록 보기
8/15
post-thumbnail

📢 개발노트에 앞서서

본 개발노트는 혼자서 언리얼 게임개발 독학하는 과정에서
공부한 내용들을 기록&공유하는 게시글이며
부족한점이 있을 수 있어 참고해서 봐주시면 감사하겠습니다

❗ 본 게시글은 위 서적의 내용을 정리 및 실습한 게시글로 모든 내용은 대부분의 내용은 책이 출처입니다


📚 스터디 내용

3장 Character 클래스 컴포넌트 및 블루프린트 설정

  • 기술적 요구 사항
  • 언리얼 캐릭터 클래스
  • C++ 클래스를 블루프린트에서 확장하기

📖 공부 내용

3장에서는 C++클래스를 생성하고 블루프린트에 상속하여
캐릭터의 움직임을 구현하는 내용을 공부 및 실습하였다.

책에서 알려준 C++클래스의 코드는 다음과 같았다
실제로 실습한 코드를 작성하였다

// MyThirdPersonChar.h

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/SpringArmComponent.h"
#include "Camera/CameraComponent.h"
#include "GameFramework/Character.h"
#include "MyThirdPersonChar.generated.h"

UCLASS()
class MYTHIRDPERSON_API AMyThirdPersonChar : public ACharacter
{
	GENERATED_BODY()

	// 작성코드
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = MyTPS_Cam, meta = (AllowPrivateAccess = "true"))
	class USpringArmComponent* CameraBoom;
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = MyTPS_Cam, meta = (AllowPrivateAccess = "true"))
	class UCameraComponent* FollowCamera;

public:
	AMyThirdPersonChar();

protected:
	virtual void BeginPlay() override;

public:
	virtual void Tick(float DeltaTime) override;

	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

};
// MyThirdPersonChar.cpp

#include "MyThirdPersonChar.h"
#include "Components/CapsuleComponent.h"
#include "GameFramework/CharacterMovementComponent.h"

AMyThirdPersonChar::AMyThirdPersonChar()
{
	PrimaryActorTick.bCanEverTick = true;
	
    // 작성 코드
	GetCapsuleComponent()->InitCapsuleSize(42.0f, 96.0f);

	bUseControllerRotationPitch = false;
	bUseControllerRotationYaw = false;
	bUseControllerRotationRoll = false;

	GetCharacterMovement()->bOrientRotationToMovement = true;

	CameraBoom
		= CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
	CameraBoom->SetupAttachment(RootComponent);
	CameraBoom->TargetArmLength = 300.0f;
	CameraBoom->bUsePawnControlRotation = true;

	FollowCamera
		= CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
	FollowCamera->SetupAttachment(CameraBoom, USpringArmComponent::SocketName);
	FollowCamera->bUsePawnControlRotation = false;
}

아직 코드들이 하나하나 의미하는 바는 정확히 모르지만
MyThirdPersonChar는 캐릭터 클래스를 상속받는 클래스로
작성한 코드는 캐릭터에 따라다니는 카메라에 대한 설정을 한 코드로 생각된다.

다음 예제에서는 생성한 클래스를 활용하여 블루프린트 클래스에 상속하여 단계를 이어나갔다

👉 MyThirdPerson 클래스를 통해 생성된 블루프린트 클래스 My_TPC


👉 My_TPC 클래스 이벤트 그래프 구현(앞뒤좌우 이동)업로드중..


해당 과정에선 Axis 입력을 W,A,S,D 키로 입력하고
이벤트 그래프에서 값을 호출받으면 캐릭터가 움직이도록 하는 방법을 실습하였다

실습 과제로는 해당 캐릭터가 점프까지 하도록 구현하는 과제였고
Axis 입력 매핑이 아닌 액션 입력 매핑을 통하여 점프를 구현할 수 있었다

👉 실습 자료 : https://github.com/deliciousqoo/GameStudy/commit/6e417b11645cfe284bdb9c7ca2ac3af41be6775f

📌 공부 후기

이번 3장에선 캐릭터의 움직임을 구현하는 방법에 대하여 배웠고
C++ 클래스를 생성 후 블루프린트 클래스에 상속하여 이를 캐릭터에 적용하는 실습까지 완료하였다

확실히 상속이라는 개념이 객체 지향 프로그래밍에서 얼마나 유용하게 사용될지에 대한 감을 잡을 수 있었고
이를 잘 활용한다면 구조적으로 수월하도록 프로그래밍 할 수 있을지 알 수 있었다

사실 감을 잡기에는 아직 경험이 부족해서 계속해서 공부해봐야 할거같다

실습에서 사용된 코드들이나 블루프린트 함수들에 대해서는 아직 정확하게 쓰임새도 모르기도 하고
적응도 안되었기 때문에 뭔가 아직 캐릭터를 혼자서 구현하라고 한다면 애매하긴 하지만
전체적으로 어떤 방식으로 흘러가는지에 대해서는 알 수 있었다

책이 뭔가 기본적인걸 안다는 가정하에 알려주는거 같긴 한데
C++클래스의 상속을 알려주는게 포인트여서 그런지 모르겠지만 추가적인 공부가 필요할 거 같다

profile
게임 개발자 지망생

0개의 댓글