TObjectPtr<>
Animation Blueprint Template
애니메이션 블루프린트의 경우 스켈레탈 메시 별로 따로 생성하느라 상속 구조가 불가능한 줄 알았음.
하지만 애니메이션 블루프린트 템플릿을 이용하면 기존 클래스의 추상화와 마찬가지로 상속 구조를 만들 수 있음.
< 애니메이션 블루프린트 템플릿>
애니메이션 블루프린트를 생성할 때, 특정 스켈레톤 대신 '템플릿'을 눌러 애니메이션 블루프린트 템플릿을 생성할 수 있음.
템플릿은 특정 스켈레탈 메시를 지정하지 않지만, 여전히 애님 그래프 등을 기존과 같이 작성할 수 있음.
애니메이션 블루프린트를 생성할 때, 특정 스켈레톤을 선택하고 부모 클래스로 생성한 템플릿을 선택하면 됨.
상속받은 애니메이션 블루프린트의 에셋 오버라이드 패널에서 각기 다른 애니메이션 에셋을 지정해 줄 수 있음.
Enhanced Input System
입력 매핑 컨텍스트와 입력 액션 에셋을 생성하여 간편하게 설정할 수 있는 입력 시스템
입력 액션을 생성하고 입력받을 값의 타입을 설정하며, 이를 입력 매핑 컨텍스트에서 조합하여 사용하는 형태임.
프로젝트의 Build.cs 파일의 PublicDependency에 EnhancedInput을 추가해주어야 함. (추가 후 솔루션 파일 재생성 필요)
UEnhancedInputLocalPlayerSubsystem* Subsystem;
Subsystem->AddMappingContext(InputMappingContext, 0);
PlayerController 클래스에서 오버라이드 하는 SetupInputComponent에 아래와 같이 코드를 작성하여
플레이어 컨트롤러 클래스의 InputComponent 변수에 담긴 EnhancedInputComponent에 접근해야 함.
(EnhancedInputComponent에 BindAction으로 입력 액션에 함수를 바인딩해야 하기 때문)
UEnhancedInputComponent* EnhancedInputComponent = CastChecked<UEnhancedInputComponent>(InputComponent);
InputComponent가 UEnhancedInputComponent로 형변환 되는 이유는
프로젝트 세팅 - 엔진 - 입력의 기본 입력 컴포넌트 클래스가 EnhancedInputComponent로 설정되어 있기 때문.
- EnhancedInputComponent의 BindAction을 호출하여 입력 액션과 입력 처리를 위해 생성한 함수를 바인딩 할 수 있음.
```c++
EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AAuraPlayerController::Move);
```
Aura 프로젝트에서 캐릭터의 이동은 평면(XY) 이동을 하되, 카메라가 바라보고 있는 방향을 정면으로 하도록 하려 함.
위의 내용을 바탕으로 FRotationMatrix의 GetUnitAxis를 통해 방향 벡터로 변환할 수 있음.
const FRotator Rotation = GetControlRotation();
const FRotator YawRotation(0.f, Rotation.Yaw, 0.f);
const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
if (APawn* ControlledPawn = GetPawn<APawn>())
{
ControlledPawn->AddMovementInput(ForwardDirection, InputAxisVector.Y);
ControlledPawn->AddMovementInput(RightDirection, InputAxisVector.X);
}
SetInputMode
check(value)
마우스 커서를 언리얼 에디터 탭에 놓고 가운데 버튼 (휠 버튼) 을 클릭하면 쉽게 닫을 수 있음.