当前位置: 首页 > backend >正文

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.设置完后进入角色蓝图,然后设置对应的蓝图动画即可

http://www.xdnf.cn/news/3411.html

相关文章:

  • C语言-函数的递归和迭代
  • Spring Boot 使用 WebMagic 爬虫框架入门
  • 腾讯云BI VS quickbi 企业选型(从企业实际功能使用和费用对比)
  • 在项目中如何对Map List等对象序列化及反序列化
  • 雅马哈SMT贴片机高效精密制造解析
  • 【数据结构】线性表--顺序表
  • 59常用控件_QComboBox的使用
  • 【C语言练习】015. 声明和初始化指针
  • 【Hive入门】Hive性能调优之资源配置:深入解析执行引擎参数调优
  • 欧拉计划 Project Euler62(立方数重排)题解
  • Allegro23.1新功能之如何加粗打印线宽操作指导
  • 跨域 iframe 内剪切板 Clipboard_API 报错
  • 网络安全零基础培训 L1-9 PHP连接MySQL数据库
  • d202551
  • QMK固件烧录指南:安全高效地更新您的机械键盘
  • Python结合QT进行开发
  • 西门子数字化研发设计制造一体化规划案例P87(87页PPT)(文末有下载方式)
  • 神经网络—损失函数
  • Python 数据智能实战 (6):用户评论深度挖掘
  • OpenGL-ES 学习(10) ---- OpenGL-ES Shader语言语法
  • CMake中强制启用option定义变量的方法
  • Unity SpriteEditor(精灵图片编辑器)
  • C++笔记-继承(下)(包含派生类的默认成员函数,菱形继承等)
  • AJAX 实例
  • vscode 的空格和 tab 设置 与 Rime 自建词库
  • AI大模型基础设施:主流的几款开源AI大语言模型的本地部署成本
  • 企业内训|智能驾驶与智能座舱技术——某汽车厂商
  • Ubuntu18 登录界面死循环 Ubuntu进不了桌面
  • 初学Vue之记事本案例
  • 【Linux】VSCode用法