#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号
广州京杭网络科技有限公司 版权所有