11_P95~P106TheWeaponClass
95 the weapon Class武器类
inheriting from the item class从Item类继承
(相关资料图)
新建weapon类,从item类中继承
如果weapon类中需要重写item中的方法,需要将item中的函数定位为virtual ,在weapon类中的定义后面加上override
如果在weapon的类中,需要使用item中原来的方法,则需要加上Super::引用
96 Sockets接口
adding sockets and attaching actors to them添加套接字并将角色附加到它们
打开Echo的骨骼,找到左右手,可以给手骨添加socket插槽
添加预览模型
97 Downloading Animations下载动画
Finding Animations for equipping a sword找到装备剑的动画
mixamo.com
从网站上找到需要的动作下载,下载时候 不要带皮肤
然后导入UE
98 IK Rig
Creating an IK Rig for Animation Retargeting为动画重定向创建IK Rig
新建 动画->IK绑定
选择两个骨骼,并对骨骼进行IK绑定
99 IK Retargeter IK重定向
Retargeting Mixamo Animations to Echo
新建一个IK重定向器,在编辑窗口中,将两个骨骼初始位置要调整一致,然后就可以导出新的动画
100 Attaching the Sword 绑定武器
attaching the sword to the right hand socket
佩剑
把剑固定在右手的插座上
蓝图实现:在weapon的蓝图中编辑如下:
注意 右侧三个选项 需要时对齐到目标
C++实现
101 Picking Up Items拾取物品
Creating an Action Mapping to Pick Up Items创建拾取物品的动作映射
希望实现按下E键 拾取道具
首先我们现在UE项目设置中,设置E按键的操作映射
我们吧之前在Weapon中实现的检测重叠的函数移动到父类Item中,只在Weapon类中实现装备Equip的效果,然后再Character类中 实现传入重叠对象参数的函数
首先在Character中包含item和weapon的头文件
在Item中包含AEchoCharacter头文件
然后声明EkeyPress函数,并将其绑定至E键
实现EKeyPress函数的功能,传入绑定的Mesh参数和Socket名称给Weapon的Equip方法
然后在Item中的OnSphereOverlap中,判断碰撞的是否为当前角色EchoCharacter,并将Character赋值给Item的AEchoCharacter类对象
最后在Weapon中,实现Equip的方法
使用AttachToComponent将得到的角色Mesh,转换规则TransformRules,绑定socket的名称InSocketName 传入
102 Enum for Character State角色状态枚举
Creating an Enum fro the Character's State为角色的状态创建Enum
如何正确的在UE中声明一个枚举
我们需要在枚举对象的名称前面加上大写的E,表示这是一个枚举参数
建议在前面加上类型限定,如果这个枚举只是在EchoCharacter类中使用,最好加上类限制,避免与其他类中相同的枚举名称重复,虽然不会有问题,但是这样可以提高可读性
在前面加上UENUM(BlueprintType) 建立反射给UE系统,这样可以在蓝图中使用C++建立的枚举类型
我们可以在枚举中,每个标识符的名称前面加上缩写以提高可读性,比如Enum Character State 可以缩写为ECS,并附加在标识符名称前面
将这个枚举单独写在一个头文件中,这样可以在其他类里面,直接包含这个头文件,而不是包含character的头文件
我们在character类中新建一个const函数,可以返回当前角色的状态
这样在EchoAnimInstance中调用这个函数,就可以获得当前角色的状态
103 switching Animation Poses切换动画姿势
Changing Poses Based on character state根据角色状态改变姿势
104 Equipped Animations装备的动画
more animations for a Single-handed weapon单手武器的更多动画
像P98一样 ,给echo添加持武器跑步的姿势
依然需要从网上下载跑步的姿势,导入
然后用xbot创建的ik文件 转换动画
然后在echo的动画蓝图中添加状态
105 Linked anim graph链接动画图
Linking multiple animation blueprints链接多个动画蓝图
新建一个动画蓝图,将之前ABP_Echo中的动画,复制到新的蓝图中
新的蓝图中,先编译一下,可以看到缺少一些变量,找到缺失的变量,然后新建
删除ABP_Echo中的节点,然后新建一个节点 Linked Anim 然后找到新的动画蓝图
在新建节点的设置界面,将参数传入,一一对应
节点
将右上角填入传入的对应的参数
106小结
标签: