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

ARPG----C++学习记录05 Section10 武器类,IK重定向,装备和捡起武器,动画蓝图

代码更新

11.13 · BAOfanTing/ARPG_Game_Code@7ab54d2 · GitHub

武器类

基于item类,创建一个weapon的C++类,基于它创建一个蓝图,刀剑的网格体给它。在蓝图里调动之前在C++写好的sin函数添加到世界偏移量里,得到一把悬浮刀

在item把重叠函数虚函数话,可以重写,重写后需要在重写的地方删掉UFUCTION,并使用override重写函数

当不使用super的时候不会调用父类函数也就是该函数目前是空的,我们经过这把刀不会显示名字。使用super需要把参数也 传入,这样会调用我们在父类里边写的显示名称

Sockets

进入人物骨骼树,在右手底下添加一个Socket(插槽,可以用来连接其他物体,可以和骨头一起移动)

右击添加一个资产预览,把剑添加上调整位置

获取挥剑动画

Mixamo  Mixamo动画资源网站

找到人物xbot,下载Tpose,在引擎里右击导入包或库,直接默认导入

找到想要的动画,不带皮肤下载

导入动画,并且选择之前下载的机器人骨骼

IK RIG和动画重定向

新建一个IKRig,选择机器人的骨架

先右击豚骨将它设置为重定向根,并且在此右键生成重定向链,然后将下表这些,头,手臂,手指,腿都设置重定向链

在对于人物的mesh新建一个ik rig,按照下表进行重定向链的搭建

新建一个IK retarget选择ik Xbot(现在有的动画的对象),双击进入,新建姿势,让人物和机器人的姿势差不多,这样重定向的动画才不会有太多问题,直接输出动画,这样就得到了拿剑和挥剑的动画,然后进入动画停在帧的位置,微调剑的位置

装备武器

编写代码

捡起武器

添加一个按键映射,E,绑定按键。在人物里添加一个内联函数(内联函数通常用于简单的操作,以提高性能,因为它们在编译时会被直接嵌入到调用它们的地方,而不生成额外的函数调用)

修改item,当人物与物体重叠时调用这个SetOverLappingItem函数将重叠物体存为一个变量

在weapon.cpp里重新写下把武器附加到手上的代码,在人物里能够调用,因此在人物文件里包含武器头文件

在人物cpp里先将重叠物体转换,然后调用Equip函数装上武器

Enum for Character State角色状态

在角色代码的开头创建一个枚举,对于下边的情况,其实已经赋值了,顺序是0,1,2。宏UENUM是为了让蓝图能够读取到这个枚举,UMETA的名字是为了在蓝图里看到

在我们拿起武器时,将角色状态设置为装备一把武器,为了让动画蓝图能够读取到这个变量,我们新建议一个characterType的头文件,将ENUM的代码剪切进去,这样我们就引用了一个很小的头文件。在动画的头文件里我们依旧新建一个角色状态变量

再到cpp里,在动画的每一帧里获取角色状态,和其他的状态变量一样

选择动画转态

进入动画蓝图待机动作处,使用一个BlendPose(混合动作)基于我们角色状态的枚举,把角色状态传入,新增两个pose,一个不拿武器待机,一个拿武器待机,这样动画就会根据状态变量来选择

找一个那武器往前走的动画,这里选上Inplace只有动画不会往前移动,下载导入重定向

一样的操作,使用动画混合让不同的状态有不同的动画

更好的组织动画蓝图

新建一个mainState的动画蓝图,然后将mainState的节点复制过去

此时GetCharacterstate是灰色的节点因为父类是默认的类,需要右击新建这个变量让它实际存在。对于其他出错的变量也进行新建,但这样的话其实这些变量永远都不会被设置

回到初始动画蓝图,新建一个LinkedAnimGragh,将新建的mainstate给他,并且绑定变量

在新建一个动画蓝图IK,将剩余节点复制过去,创建错误变量,新建一个inputpose,将它存储为cachepose并使用

回到初始动画蓝图,新建一个linkAnimGraph使用ik的那个蓝图

http://www.lryc.cn/news/229328.html

相关文章:

  • CSRF跨站请求伪造
  • 修改kernel驱动配置文件
  • 采集摄像头数据的Golang应用
  • Axure9学习
  • 使用gitflow时如何合并hotfix
  • (七)Spring源码解析:Spring事务
  • Stable Diffusion 是否使用 GPU?
  • DevOps平台两种实现模式
  • Java 简单实现一个 UDP 回显服务器
  • element ui中Select 选择器,自定义显示内容
  • 机器视觉行业,日子不过了吗?都进入打折潮,双11只是一个借口,打广告出新招,日子不好过是真的
  • 【手动创建UIWindow Objective-C语言】
  • 【学习辅助】Axure手机时间管理APP原型,告别手机控番茄任务模板
  • [PyTorch][chapter 62][强化学习-基本概念]
  • 使用 Stable Diffusion Img2Img 生成、放大、模糊和增强
  • 【Git】第一篇:Git安装(centos)
  • 在uniapp中通过自定义事件使页面之间传递数据
  • 【Windows Docker:安装nginx】
  • ElasticSearch7.x - HTTP 操作 - 查询文档操作
  • 基于opencv+tensorflow+神经网络的智能银行卡卡号识别系统——深度学习算法应用(含python、模型源码)+数据集(一)
  • 如何使用`open-uri`模块
  • activiti7审批驳回,控制变量无法覆盖,导致无限循环驳回,流程无法结束
  • 世界互联网大会|云轴科技ZStack受邀分享云原生超融合
  • k8s ingress基础
  • 【网络奇缘】我和英特网再续前缘
  • node插件MongoDB(四)—— 库mongoose 的条件控制(三)
  • 【Amazon】云上探索实验室—了解 AI 编程助手 Amazon Codewhisperer
  • 【安卓13】谷歌原生桌面launcher3 禁止桌面图标拖拽和所有应用拖拽
  • SA实战 ·《SpringCloud Alibaba实战》第13章-服务网关:项目整合SpringCloud Gateway网关
  • 海外ASO优化之谷歌商店的评论优化