#include "ConstructorHelpers.h" #include "CharacterAnimInstance.h"
注意,由于我们添加的资源是一个类,所以我们要在资源路径的后面加上_C。
//指认动画蓝图
static ConstructorHelpers::FClassFinder<UCharacterAnimInstance> AnimInstance( TEXT("AnimBlueprint'/Game/TwinSwordAnimsetBase/UE4_Mannequin/Mesh/UE4_Mannequin_Skeleton_AnimBlueprint.UE4_Mannequin_Skeleton_AnimBlueprint_C'") );
//判断资源是否存在
if (AnimInstance.Succeeded()) {
//赋值
GetMesh()->SetAnimInstanceClass(AnimInstance.Class);
}
/**
* //角色动画蓝图
*/
UCLASS()
class GAMEPROJECT_API UCharacterAnimInstance : public UAnimInstance
{
GENERATED_BODY()
protected:
virtual void NativeUpdateAnimation(float DeltaSeconds) override;
//判断人物有没有移动
UPROPERTY(BlueprintReadOnly)
float IsMove;
//判断人物有没有跳跃
UPROPERTY(BlueprintReadOnly)
bool IsJump;
};
#include "CharacterAnimInstance.h"
#include "PlayingCharacter.h"
#include "GameFramework/CharacterMovementComponent.h"
void UCharacterAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
Super::NativeUpdateAnimation(DeltaSeconds);
//TryGetPawnOwner() 返回的是一个Pawn类,它通过骨骼模型组件返回指认了它的角色,然后再把返回的Pawn转换成我们想要的角色
APlayingCharacter* Character = Cast<APlayingCharacter>(TryGetPawnOwner());
if (Character)
{
//GetVelocity() 返回的是角色的移动组件的速度,如果这个值大于0说明Character在移动,Size() 是获取向量的模
IsMove = Character->GetVelocity().Size();
//IsFalling() 如果角色当前正在下降就返回真
IsJump = Character->GetCharacterMovement()->IsFalling();
}
}
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有