欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > RPG_5.角色动画

RPG_5.角色动画

2025/11/26 18:12:12 来源:https://blog.csdn.net/qq1140083180/article/details/147654575  浏览:    关键词:RPG_5.角色动画

1.创建一个动画实例

2.创建该实例的c++子类

3.继续创建该类的子类,但是作用是用来链接(以后会详细解释)

4.基于PlayerAnimInstance类创建一个子类

5.目前一共创建了四个c++类,

最基的类

角色的类

玩家控制的角色的类

玩家控制的角色的武器的类

6.进入XMBCharcterAnimInstance,覆写

public:// 自定义初始化逻辑(例如设置骨骼引用、动画曲线等)virtual void NativeInitializeAnimation() override;//这个函数在一个工作线程上运行而不是在游戏线程上运行,意味着使用此函数计算需要的所有变量可以相当优化virtual void NativeThreadSafeUpdateAnimation(float DeltaSeconds) override;

创建变量

protected://设置基于角色来获取类型UPROPERTY()ACharacterBase* OwningCharacter;//移动组件UPROPERTY()UCharacterMovementComponent* OwningMovementComponent;//行走速度UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "AnimData")float GroundSpeed;//是否有加速度UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "AnimData")bool bHasAcceleration;

7.实现函数

//目的:在初始化动画中获取我们需要的关键变量
void UXMBCharacterAnimInstance::NativeInitializeAnimation()
{//获取当前所有者OwningCharacter = Cast<ACharacterBase>(TryGetPawnOwner());if (OwningCharacter){OwningMovementComponent = OwningCharacter->GetCharacterMovement();}
}//在更新动画中获取我们的蓝图动画需要的变量
void UXMBCharacterAnimInstance::NativeThreadSafeUpdateAnimation(float DeltaSeconds)
{if (!OwningCharacter || !OwningMovementComponent){return;}//获取当前Owner的移动速度和加速度GroundSpeed =  OwningCharacter->GetVelocity().Size2D();//判断Owner是否具有加速度bHasAcceleration = OwningMovementComponent->GetCurrentAcceleration().SizeSquared2D() > 0.f;
}

8.启动引擎,创建一个属于PlayerAnimInstance的动画蓝图

创建好后选择这个,并且能看到变量内有自己创建的变量,则成功

9.创建一个混合空间,选择

创建好后打开,在左侧栏填入变量名称,并且把x值最大改为400,

10.进入动画蓝图,创建一个状态机

11.设置状态机

12.设置完后进入角色蓝图,然后设置对应的蓝图动画即可

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词