主要内容:装备武器,攻击,敌人攻击,受伤,敌人受伤
事先下载好武器模型、动画等,注意的是,模型贴图、对应骨骼等可能要重新设置,材质的各项参数要重新拖入纹理连线,动画要全部重定向
一、添加武器
1、创建插槽
打开人物骨骼界面
若武器放在背上可切换,可在骨骼spine_03处加插槽,这里再加三个插槽,用来装弓、锤、箭袋
2、摆对背后武器的位置
播放动画序列拔武器,这时可以暂停,暂停后把武器位置调整到正确位置
没贴图是因为下载导入的材质失效了,重新进入材质编辑,拖入纹理,重新连线可生效,这里省略
可以看纹理的文件名字确定是法线、基础颜色等等参数
3、在人物蓝图中添加2个静态网格体,分别为锤、箭袋,1个骨骼网格体,弓(因为模型为骨骼网格体)
4、建立函数
将武器放到自身网格体
写上插槽名字
设置位置与插槽处一致
设置好后
二、基本操作与移动动画
在混合空间中添加好站、走、跑,在动画蓝图中使用
(记得将speed设为变量并使用)
鼠标移动视角、移动输入等可参考标准小白人蓝图
调节选择z轴倍率,可调节小白人转身的速度
将摩擦力设为0,制动降速行走降低(这里改为512),可以使角色行走停下时有个惯性似的,更加平滑
三、拔出、收回武器和弓
这里做的是:攻击时拔出来,一段时间不攻击收回去;
而不是按键切换武器
1、拔出武器只需要上半身,而动画下半身也会动,因此想办法只用上半身
将拔出武器、收回武器的动画创建为蒙太奇动画(动画蓝图那记得加插槽)
在蒙太奇动画中添加插槽:上半身,并将动画设为上半身
在动画蓝图中,添加关于蒙太奇的骨骼分层
需先将姿势存为缓存(方便多次调用)
使用骨骼分层节点,使用上半身蒙太奇的插槽,在骨骼分层处添加成员,成员里骨骼名称命名为spine_01,刚好是上、下半身的界(去骨骼看节点名称)
在人物蓝图中使用蒙太奇动画
注!记得打开网格体空间旋转混合mesh space rotation,否则会出现偏移(比如拔武器时小人一直 左右乱晃)
注意!!!要取消原动画(创建蒙太奇动画前)的根据根运动(rootmotion),否则拔出武器时人物不能移动且会滑步
2、使拔出来的武器真正在手中
在左右手添加插槽(右手主武器,左手拿弓)
主要思路是播放蒙太奇动画与组件attach组件的结合,自行调整延迟等,使武器拿出来和放回去的时机刚好
添加个bool判断是否为弓,以后用,主要用到节点选择(要选择啥就从啥里拖出select)
拿出如下:
收回类似
3、攻击动画
攻击动画都采用rootmotion动画(即要打开根运动,上面有些动画则不能打开)
将选好的几个(连击)攻击动画创建为蒙太奇动画(根据情况选上半身还是全身)
思路为:按下鼠标左键后,拿出武器并攻击,然后继续按左键发动后面的连击,一段时间不按左键的话就收回武器
注意的点:
新建变量ID来决定按下左键后播放哪个蒙太奇动画,按一次id若不为最大动作的编号,则id++,否则设为0
添加变量 能攻击? 在出招时前部分时间不能攻击,在每一个蒙太奇动画增加动画通知,在动画蓝图中编写:收到通知后将"能攻击"设为true。可在一招未完接下一招,形成连击
右键拿出武器,在能攻击的时候才能拿出武器,即不能攻击的时候是不能的
能攻击的时候才能拿出武器或者放回武器
新增变量是否装备武器,若装备了,则按左键不再触发拿出武器,直接攻击,不然为先拿出武器再攻击
设置可再触发延迟,如图,若3秒内没再受到触发,执行放回武器
不能一直执行拿和收同一件武器
总之一堆麻烦事,目前自己只能慢慢调,最终结果:
还是有一些小bug,比如拔出武器不进行攻击的话,就不会自动收回武器,不过无伤大雅,以后可以优化或者直接改变更换武器的方式
4、让武器拔出后,站立姿势改变
content创建枚举变量,添加需要的几种姿势
在人物蓝图中,进行各种操作时,改变枚举的姿势选定
在动画蓝图中使用专门的混合姿势节点,将指定的值提升为变量
令该变量等于人物那的枚举变量
完成
bug:人物在变成锤子的站立或弓的站立时,脚会陷入地下,可能得使用IK?(收藏栏)
5、8个方向的移动动画(例如按s人物会往后倒退,而不会转身向后走)
使用混合空间(非2D)
先将竖轴命名为direction,范围改为-180~180(平时向前走时角度为0,按住w和d时,角度为45)
把8方向的动画全部拖入(走有8个方向,跑有8个方向等等)
打开使用控制器所需的旋转,关闭将旋转朝向运动(可以仅在持弓时设置,拉完弓设置回去,而以后拉弓可以再弄一个拉弓的八方向动画)
接下来计算direction的值,在动画蓝图中计算(speed也是那里计算),用到“计算方向”节点
在动画蓝图中使用混合空间,连上direction的值
四、拉弓
需要为弓创建一个动画蓝图,添加状态机,平常-》平常到拉弓-》拉弓中-》拉弓到平常-》平常
添加一个pull的值,在动画蓝图中将人物处pull传到动画蓝图中,按键拉弓时,改变pull的值
若弓拉开的速度不匹配手的速度,可以改变弓动画蓝图中的rate
五、射箭
节点“从类生成actor”生成箭,然后添加到手上插槽里
箭需要是一个actor,可以用弹射组件,但弹射组件的话,一生成箭就会飞出去,因此这里不用组件,用一个添加冲力(记得修改冲力方向)的事件
射出去时,将箭的actor脱离
四、攻击使ai受伤死亡
可用多球体碰撞判断
可用蓝图接口和重叠
受伤播放动画
死亡可设置模拟物理,添加冲力
参考视频:
【新手向】虚幻4ARPG教程-重置版-第一集-资源导入及简单地形(UE4实例)_哔哩哔哩_bilibili