Top/Shoulder View

Ryan Ham·2024년 6월 23일
1

Unreal Engine

목록 보기
15/27

Data Asset Class

Pawn, Camera, Character Movement 등 Character가 회전 및 움직이는데 들어가는 설정들이 너무 분산화 되어있다.

Data Asset Class를 만들어서 이렇게 분산되어 있는 설정들을 한곳에 모아 관리해보자.

DataAsset에 기능이 조금 더 확장된 PrimaryDataAsset 클래스를 만들어보자.


// Primary DataAsset으로 만든 View 관련 Class

#pragma once

#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "ABCharacterControlData.generated.h"

/**
 * 
 */
UCLASS()
class ARENABATTLE_API UABCharacterControlData : public UPrimaryDataAsset
{
	GENERATED_BODY()
	
public:
	UABCharacterControlData();

	UPROPERTY(EditAnywhere, Category = Pawn)
	uint32 bUseControllerRotationYaw : 1;

	UPROPERTY(EditAnywhere, Category = CharacterMovement)
	uint32 bOrientRotationToMovement : 1;

	UPROPERTY(EditAnywhere, Category = CharacterMovement)
	uint32 bUseControllerDesiredRotation : 1;

	UPROPERTY(EditAnywhere, Category = CharacterMovement)
	FRotator RotationRate;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input)
	TObjectPtr<class UInputMappingContext> InputMappingContext;

	UPROPERTY(EditAnywhere, Category = SpringArm)
	float TargetArmLength;

	UPROPERTY(EditAnywhere, Category = SpringArm)
	FRotator RelativeRotation;

	UPROPERTY(EditAnywhere, Category = SpringArm)
	uint32 bUsePawnControlRotation : 1;

	UPROPERTY(EditAnywhere, Category = SpringArm)
	uint32 bInheritPitch : 1;

	UPROPERTY(EditAnywhere, Category = SpringArm)
	uint32 bInheritYaw : 1;

	UPROPERTY(EditAnywhere, Category = SpringArm)
	uint32 bInheritRoll : 1;

	UPROPERTY(EditAnywhere, Category = SpringArm)
	uint32 bDoCollisionTest : 1;

	
};

BP 작업하기

이렇게 CPP 클래스를 만들면, 각 변수의 UPROPERTY의 속성값들을 EditAnywhere로 만들어 놓았으므로, Unreal Engine에서 이 클래스를 상속하는 BP를 만들어서 손쉽게 Top/Shoulder view를 구현할 수 있다.


키입력을 통해서 시점(View) 변환하기

각각의 View에 따라서 Move함수와 Look함수를 다르게 구현되어야 한다.

  1. IA, IMC 만들기(특정 버튼을 눌러서 View switch하기. 총 5개의 IA가 나와야 한다. 한개는 switch, 나머지 4개는 숄더-이동, 숄더-뷰 회전, 탑-이동, 탑-뷰 회전. 마찬가리로 IMC도 각각 있어야 함으로 총 2개가 나와야 한다.)
  2. Runtime에서 IMC를 switching할 수 있어야 한다. 기존에 있던 IA와 IMC를 초기화 시키고 새로운 IA와 IMC를 만들기.
profile
🏦KAIST EE | 🏦SNU AI(빅데이터 핀테크 전문가 과정) | 📙CryptoHipsters 저자

0개의 댓글