砍树功能效果的实现

在UE中想做一个砍树的功能,B站上没找到什么教程,最后在油管上找到个视频并跟着实现了,一共设计到三个蓝图和一个什么也没写的蓝图接口,下面介绍下步骤。

1.角色蓝图的部分

人物这里我做的是按F挥动手上的斧头攻击树,最后树的倒下。蓝图如下:

UE5 remotecontrol 其他ip ue5新功能_局部变量

砍树射线追踪蓝图节点是个自定义节点:

UE5 remotecontrol 其他ip ue5新功能_局部变量_02

UE5 remotecontrol 其他ip ue5新功能_局部变量_03

节点中要新建一个局部变量“被射线扫描到的树” ,是个Actor类型的数组变量。

UE5 remotecontrol 其他ip ue5新功能_自定义_04

此处是否实现接口 的意义是,自己建的一个空蓝图接口,里面就改了函数名,其他啥也没,主要用这个接口来判断某个类是否属于某一类物体。

UE5 remotecontrol 其他ip ue5新功能_局部变量_05

查找最近的树节点也是个自定义节点。其中有三个局部变量,如图

UE5 remotecontrol 其他ip ue5新功能_自定义_06

UE5 remotecontrol 其他ip ue5新功能_状态机_07

查找最近的树节点完毕,下面这张还是角色部分剩余的蓝图节点。

UE5 remotecontrol 其他ip ue5新功能_状态机_08

UE5 remotecontrol 其他ip ue5新功能_局部变量_09

事件蓝图的部分没啥好讲的,也就一个bIsUseAxe布尔变量是新建的。

2.动画蓝图部分

突然想起来人物砍树是有动画的。大家根据自己的来,这里仅供参考。

UE5 remotecontrol 其他ip ue5新功能_状态机_10

点进ChopTreeMachine状态机后:

UE5 remotecontrol 其他ip ue5新功能_局部变量_11

继续进入节点:

UE5 remotecontrol 其他ip ue5新功能_局部变量_12

用的一个从Maximo下载的动画,用RTG重定向到了自己角色的身上,你们可以自己找个舒服的劈砍动画用。在轨道中添加了两个事件,左边是开启判断造成伤害的通知,右边的是关闭。这两个通知在动画蓝图的事件部分实现,在角色蓝图的部分中使用。

UE5 remotecontrol 其他ip ue5新功能_状态机_13

事件部分:

UE5 remotecontrol 其他ip ue5新功能_自定义_14

3.斧子蓝图的部分

砍树得有斧子,来看看斧子怎么做的

UE5 remotecontrol 其他ip ue5新功能_状态机_15

这是斧子蓝图,找一个斧子的模型加进去,再附加一个盒体碰撞进去,调整盒体碰撞至盒子的大小,这个盒子就是用来判断是否和树发生碰撞的关键。然后给盒体添加一个组件开始重叠时的事件。

UE5 remotecontrol 其他ip ue5新功能_局部变量_16

UE5 remotecontrol 其他ip ue5新功能_局部变量_17

后面那个deal damage事件是BPI_Tree蓝图接口的,是在树的蓝图中实现的,后面会有截图。这里 在位置处生成发射器 生成的是一个贴花效果,我想要斧子砍到树上的时候,产生木屑飞溅的效果,我用的资产包是商城中免费的,下面标红的就是商城中的资产名称,记得把横线去掉。

UE5 remotecontrol 其他ip ue5新功能_自定义_18

后面的在位置处生成音效就是生成一个砍木头的声音,这个我自己随意找的,你们随便找个或者不要这个节点都行。

4.树蓝图的部分

它之前是一颗健壮的树,直到我把它拖到blender里砍成了三段。而为什么要变成三段可以看看最下面放的油管教程链接。我只能说是必要的。

UE5 remotecontrol 其他ip ue5新功能_自定义_19

下面是蓝图接口事件deal damage的部分,以及蓝图一开始先设定血量,这里我设定的是100,而下面的伤害是110,也就是说一斧子就能把树砍倒,怎么让树倒呢,这时开启树干部分的模拟物理就行了。同时给树干施加一个和角色同向向前的作用力保证树不会砸着角色。而树冠是附加在树干上的,就会一起跟着倒。

UE5 remotecontrol 其他ip ue5新功能_局部变量_20

后面有个生成节点,我做的效果是树倒后过四秒,树的模型部分会消失,然后生成四个木材蓝图,就像爆装备一样的效果。之所以加这么多随机位置和随机朝向是为了防止都生成在一个位置,各物品受到挤压从而发生寒霜航空。

UE5 remotecontrol 其他ip ue5新功能_自定义_21

UE5 remotecontrol 其他ip ue5新功能_自定义_22

所有事情处理完后再销毁自己。