Mycharacter::Mesh에서 플레이할 애니메이션 설정
MyAnimInstance에서 애니메이션 관리
* 작업구조
cpp-상속받은 블루프린트
ex) MyAnimInsatnce.cpp ---상속받은 ABP_MyAnim
float speed => 애니메이션 분기
※ 코드작성후 저장만으로 반영X
엔진에서 컴파일 해야함
speed>0 ? then jmp else idel을 BP로 구현
* 값 전달 방법
1. MyCharacter에서 애니메이션의 speed를 얻어와서 조작한다.
(-) 코드가 많아지면 겹쳐서 스피드를 조작할 가능성 => 버그를 찾기 어려움
-> 개선 : 애니메이션에서 플레이어의 정보를 얻어와서 관리함.
ex)매 프레임마다
멤버변수 Speed = Pawn->GetVelocituy().Size()
멤버변수 isFalling = Character->GetMovementComponent()->IsFalling();
&& speed, isFalling 이용해서 => 애니메이션 분기
* 값 전달하기
NativeUpdateAnimation() 함수는 매 틱마다 실행된다.
1.부모의 업데이트 실행
2.pawn을 받아옴.
3.유효하면 폰의 스피드 갱신
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Animation/AnimInstance.h"
#include "MyAnimInstance.generated.h"
/**
*
*/
UCLASS()
class TESTUNREALENGINE_API UMyAnimInstance : public UAnimInstance
{
GENERATED_BODY()
virtual void NativeUpdateAnimation(float DeltaSeconds) override;
private:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Pawn, Meta=(AllowPrivateAccess=true));
float Speed;
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyAnimInstance.h"
void UMyAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
Super::NativeUpdateAnimation(DeltaSeconds);
auto pawn = TryGetPawnOwner();
if (IsValid(pawn))
{
Speed = pawn->GetVelocity().Size();
}
}
'UE5' 카테고리의 다른 글
애니메이션 몽타주 (0) | 2022.08.14 |
---|---|
스테이트 머신 (0) | 2022.08.14 |
블루프린트 클래스 (0) | 2022.08.11 |
캐릭터 생성 (0) | 2022.08.08 |
게임플레이 프레임워크 (0) | 2022.08.07 |