지난 시간에는 조준한 채로 좌우 회전 시 캐릭터도 같이 회전하는 것까지 작업했었다.
이번에는 조준한 채로 상하 회전 시 그 방향을 조준하도록 하였다.
이를 구현하기 위해서는 Aim Offset을 활용해야 한다.
https://docs.unrealengine.com/5.3/ko/creating-an-aim-offset-in-unreal-engine/
Aim Offset과 Aim Offset 1D가 있는데, 축이 2개이냐 1개이냐의 차이이다. 현재 필요한 변수는 시점의 상/하 방향 하나 뿐이므로, Aim Offset 1D를 사용하였다.
먼저 에임 오프셋 안에 들어갈 앞 방향 조준, 위 방향 조준, 아래 방향 조준 포즈를 만들어주어야 한다.
각 포즈는 기본 조준 애니메이션을 1프레임만 남기고 다 잘라낸 뒤, Spine을 회전시켜 키를 추가하여 만들었다.
그리고 각 포즈의 디테일 패널의 Additive Settings를 위의 이미지와 같이 설정해준다.
이제 이 세 포즈를 아까 만든 에임 오프셋 1D에 넣어준다.
에임 오프셋이 완성되었으므로, 이것을 블루프린트에서 사용할 차례이다.
우선, Pitch 값을 블루프린트에서 쓸 수 있도록 C++ 코드를 작성해주었다.
UPROPERTY(BlueprintReadonly)
float Pitch;
애니메이션 블루프린트의 부모 클래스의 헤더에 Pitch 변수 추가
// Fill out your copyright notice in the Description page of Project Settings.
#include "Character/KannaAnimInstance.h"
#include "Character/KannaCharacter.h"
#include "GameFramework/CharacterMovementComponent.h"
#include "Kismet/KismetMathLibrary.h"
void UKannaAnimInstance::NativeInitializeAnimation()
{
Super::NativeInitializeAnimation();
KannaCharacter = Cast<AKannaCharacter>(TryGetPawnOwner());
if (KannaCharacter)
{
KannaCharacterMovement = KannaCharacter->GetCharacterMovement();
}
}
void UKannaAnimInstance::NativeUpdateAnimation(float DeltaTime)
{
Super::NativeUpdateAnimation(DeltaTime);
if (KannaCharacterMovement)
{
GroundSpeed = UKismetMathLibrary::VSizeXY(KannaCharacterMovement->Velocity);
IsFalling = KannaCharacterMovement->IsFalling();
CharacterState = KannaCharacter->GetCharacterState();
ActionState = KannaCharacter->GetActionState();
CharacterSpeed = KannaCharacter->GetVelocity().Length();
CharacterDirection = CalculateDirection(KannaCharacter->GetVelocity(), KannaCharacter->GetActorRotation());
Pitch = KannaCharacter->GetBaseAimRotation().Pitch;
}
}
(최하단 줄) GetBaseAimRotation()는 Rotator를 리턴한다. 리턴받은 Rotator의 Pitch를 가져오면 된다.
지난 시간에 만든 상,하체 레이어 블렌딩과도 합쳐져야 하기 때문에, 그 Output 포즈를 에임 오프셋의 Base Pose로 넣어주고, 에임 오프셋의 Output 포즈를 최종 포즈로 연결해주면 된다.
다음은 적용 결과이다.
'언리얼 엔진 5 > 개발 일지' 카테고리의 다른 글
[UE5] 블루아카이브 TPS게임 개발일지 (8) - 적 모델링 임포트 (4) | 2023.12.18 |
---|---|
[UE5] 블루아카이브 TPS게임 개발일지 (7.5) - 사격 애니메이션 추가(Additive Animation) (0) | 2023.12.18 |
[UE5] 블루아카이브 TPS게임 개발일지 (6) - TPS 애니메이션 (Layered Blend, Blend Space) (0) | 2023.12.15 |
[UE5] 블루아카이브 TPS게임 개발일지 (5) - Mixamo Converter 사용, 구르기 구현 (0) | 2023.12.14 |
[UE5] 블루아카이브 TPS게임 개발일지 (4) - EActionState 추가, 근접 공격 추가 (0) | 2023.12.03 |