ue4 简单战斗

主要内容:装备武器,攻击,敌人攻击,受伤,敌人受伤

事先下载好武器模型、动画等,注意的是,模型贴图、对应骨骼等可能要重新设置,材质的各项参数要重新拖入纹理连线,动画要全部重定向

一、添加武器

 1、创建插槽

打开人物骨骼界面

若武器放在背上可切换,可在骨骼spine_03处加插槽,这里再加三个插槽,用来装弓、锤、箭袋

2、摆对背后武器的位置

播放动画序列拔武器,这时可以暂停,暂停后把武器位置调整到正确位置

ue4 简单战斗_第1张图片

ue4 简单战斗_第2张图片

没贴图是因为下载导入的材质失效了,重新进入材质编辑,拖入纹理,重新连线可生效,这里省略

可以看纹理的文件名字确定是法线、基础颜色等等参数

3、在人物蓝图中添加2个静态网格体,分别为锤、箭袋,1个骨骼网格体,弓(因为模型为骨骼网格体)

ue4 简单战斗_第3张图片

4、建立函数

ue4 简单战斗_第4张图片

将武器放到自身网格体

写上插槽名字

设置位置与插槽处一致

ue4 简单战斗_第5张图片

设置好后

ue4 简单战斗_第6张图片

二、基本操作与移动动画

在混合空间中添加好站、走、跑,在动画蓝图中使用

(记得将speed设为变量并使用)

ue4 简单战斗_第7张图片

鼠标移动视角、移动输入等可参考标准小白人蓝图

调节选择z轴倍率,可调节小白人转身的速度

ue4 简单战斗_第8张图片

将摩擦力设为0,制动降速行走降低(这里改为512),可以使角色行走停下时有个惯性似的,更加平滑

ue4 简单战斗_第9张图片

三、拔出、收回武器和弓

这里做的是:攻击时拔出来,一段时间不攻击收回去;

而不是按键切换武器

1、拔出武器只需要上半身,而动画下半身也会动,因此想办法只用上半身

将拔出武器、收回武器的动画创建为蒙太奇动画(动画蓝图那记得加插槽)

在蒙太奇动画中添加插槽:上半身,并将动画设为上半身

ue4 简单战斗_第10张图片

在动画蓝图中,添加关于蒙太奇的骨骼分层

需先将姿势存为缓存(方便多次调用)

使用骨骼分层节点,使用上半身蒙太奇的插槽,在骨骼分层处添加成员,成员里骨骼名称命名为spine_01,刚好是上、下半身的界(去骨骼看节点名称)

ue4 简单战斗_第11张图片

ue4 简单战斗_第12张图片

在人物蓝图中使用蒙太奇动画

ue4 简单战斗_第13张图片

注!记得打开网格体空间旋转混合mesh space rotation,否则会出现偏移(比如拔武器时小人一直 左右乱晃)

ue4 简单战斗_第14张图片

注意!!!要取消原动画(创建蒙太奇动画前)的根据根运动(rootmotion),否则拔出武器时人物不能移动且会滑步

ue4 简单战斗_第15张图片

2、使拔出来的武器真正在手中

在左右手添加插槽(右手主武器,左手拿弓)

主要思路是播放蒙太奇动画与组件attach组件的结合,自行调整延迟等,使武器拿出来和放回去的时机刚好

添加个bool判断是否为弓,以后用,主要用到节点选择(要选择啥就从啥里拖出select)

拿出如下:

ue4 简单战斗_第16张图片

收回类似

3、攻击动画

攻击动画都采用rootmotion动画(即要打开根运动,上面有些动画则不能打开)

将选好的几个(连击)攻击动画创建为蒙太奇动画(根据情况选上半身还是全身)

思路为:按下鼠标左键后,拿出武器并攻击,然后继续按左键发动后面的连击,一段时间不按左键的话就收回武器

注意的点:

新建变量ID来决定按下左键后播放哪个蒙太奇动画,按一次id若不为最大动作的编号,则id++,否则设为0

添加变量 能攻击? 在出招时前部分时间不能攻击,在每一个蒙太奇动画增加动画通知,在动画蓝图中编写:收到通知后将"能攻击"设为true。可在一招未完接下一招,形成连击

ue4 简单战斗_第17张图片

右键拿出武器,在能攻击的时候才能拿出武器,即不能攻击的时候是不能的

能攻击的时候才能拿出武器或者放回武器

新增变量是否装备武器,若装备了,则按左键不再触发拿出武器,直接攻击,不然为先拿出武器再攻击

设置可再触发延迟,如图,若3秒内没再受到触发,执行放回武器

不能一直执行拿和收同一件武器

总之一堆麻烦事,目前自己只能慢慢调,最终结果:

ue4 简单战斗_第18张图片

ue4 简单战斗_第19张图片

ue4 简单战斗_第20张图片

还是有一些小bug,比如拔出武器不进行攻击的话,就不会自动收回武器,不过无伤大雅,以后可以优化或者直接改变更换武器的方式

4、让武器拔出后,站立姿势改变

content创建枚举变量,添加需要的几种姿势

在人物蓝图中,进行各种操作时,改变枚举的姿势选定

在动画蓝图中使用专门的混合姿势节点,将指定的值提升为变量

ue4 简单战斗_第21张图片

令该变量等于人物那的枚举变量

ue4 简单战斗_第22张图片

完成

bug:人物在变成锤子的站立或弓的站立时,脚会陷入地下,可能得使用IK?(收藏栏)

5、8个方向的移动动画(例如按s人物会往后倒退,而不会转身向后走)

使用混合空间(非2D)

先将竖轴命名为direction,范围改为-180~180(平时向前走时角度为0,按住w和d时,角度为45)

把8方向的动画全部拖入(走有8个方向,跑有8个方向等等)

打开使用控制器所需的旋转,关闭将旋转朝向运动(可以仅在持弓时设置,拉完弓设置回去,而以后拉弓可以再弄一个拉弓的八方向动画)

ue4 简单战斗_第23张图片

ue4 简单战斗_第24张图片

接下来计算direction的值,在动画蓝图中计算(speed也是那里计算),用到“计算方向”节点

ue4 简单战斗_第25张图片

在动画蓝图中使用混合空间,连上direction的值

ue4 简单战斗_第26张图片

四、拉弓

需要为弓创建一个动画蓝图,添加状态机,平常-》平常到拉弓-》拉弓中-》拉弓到平常-》平常

添加一个pull的值,在动画蓝图中将人物处pull传到动画蓝图中,按键拉弓时,改变pull的值

若弓拉开的速度不匹配手的速度,可以改变弓动画蓝图中的rate

五、射箭

节点“从类生成actor”生成箭,然后添加到手上插槽里

箭需要是一个actor,可以用弹射组件,但弹射组件的话,一生成箭就会飞出去,因此这里不用组件,用一个添加冲力(记得修改冲力方向)的事件

射出去时,将箭的actor脱离

四、攻击使ai受伤死亡

可用多球体碰撞判断

可用蓝图接口和重叠

受伤播放动画

死亡可设置模拟物理,添加冲力

参考视频:

【新手向】虚幻4ARPG教程-重置版-第一集-资源导入及简单地形(UE4实例)_哔哩哔哩_bilibili

你可能感兴趣的:(虚幻4)