72. UE5 RPG 实现召唤技能数量的限制,并优化技能相关

在上一篇文章里,我们实现了召唤技能,并且能够无限的召唤。所以,这属于一个bug,我们不能无限制的去召唤,这会影响游戏的体验。所以,在这篇里面,我们实现一下对召唤物数量的限制,并优化一些相关的内容。

优化召唤物的朝向

首先,我们将召唤物的朝向修改一下,不想让召唤出来的怪物都是固定的朝向,而是根据召唤者的位置,让它的后背朝向召唤者。我们可以获取召唤者的位置到召唤物的方向,来设置召唤物的朝向。

添加相关代码

我们接下来,想实现在召唤师召唤了一定数量的仆从后,将不再继续召唤仆从,转而使用攻击技能攻击玩家。那么,它就需要拥有两个技能,一个攻击技能和一个召唤技能。

要区分触发的技能,我们需要给它设置不同的标签,攻击的标签现在是Attack,那么我们需要增加一个召唤技能触发的标签。

我们通过代码再添加一个标签

cpp 复制代码
FGameplayTag Abilities_Summon; //召唤技能激活标签

然后注册到标签管理器,这样在代码中和UE里面都能够使用标签

cpp 复制代码
	GameplayTags.Abilities_Summon = UGameplayTagsManager::Get()
		.AddNativeGameplayTag(
			FName("Abilities.Summon"),
			FString("召唤技能标签")
			);

然后我们在角色基类上面添加一个属性,用于记录当前角色拥有的仆从数量

cpp 复制代码
	UPROPERTY(BlueprintReadOnly, Category="Combat")
	int32 MinionsCount = 0; //仆从数量

有了属性,我们需要添加一个获取数量的函数,这个函数添加在接口里,我们在战斗接口添加一个获取仆从数量的函数

cpp 复制代码
	UFUNCTION(BlueprintNativeEvent, BlueprintCallable)
	int32 GetMinionCount(); //获取角色拥有的仆从数量

在角色基类里覆写它

cpp 复制代码
virtual int32 GetMinionCount_Implementation() override;

接着我们增加一个可以增加仆从数量的函数,在战斗接口中创建

cpp 复制代码
	UFUNCTION(BlueprintNativeEvent, BlueprintCallable)
	void IncrementMinionCount(const int32 Amount); //设置角色仆从的增长数量,负数为负增长

然后在角色基类中覆写

cpp 复制代码
virtual void IncrementMinionCount_Implementation(const int32 Amount) override;

在cpp中,通过传入的数字去修改仆从数量

cpp 复制代码
void ARPGCharacter::IncrementMinionCount_Implementation(const int32 Amount)
{
	MinionCount += Amount;
}

创建新的行为树和任务

上面,我们增加一些代码,用来实现需求,可以获取也可以设置角色所拥有的仆从的数量。我们还需要创建一个新的行为树,用于修改召唤师敌人的AI逻辑,然后增加一个新的任务,在里面实现是使用召唤技能增加仆从还是使用攻击技能攻击玩家。

我们首先将之前制作的行为书复制一份去修改

设置好用于元素师专用的行为树

然后将萨满使用的行为树修改掉

接着在数据里面给元素师类型的数据添加上攻击技能,这样,在通过标签触发技能的时候,攻击技能就可以通过Attack标签触发,召唤技能可以通过Summon标签触发

我们将召唤技能的标签修改成召唤标签

准备工作完成,接下来,我们将修改行为树,我们需要将行为树中的攻击任务修改掉,将其修改成能功判断使用召唤技能还是攻击技能

接下来,我们复制一个攻击任务,在此基础上扩展

命名为BTT_Attack_Elementalist

我们在任务里面新增两个属性标签,一个召唤激活标签,用于激活召唤技能使用,另一个是技能标签,我们通过逻辑修改,激活时,使用它去激活

我们修改逻辑,增加对于召唤师仆从的数量进行判断,如果小于1, 将进行再次召唤

true分支是激活召唤技能,false是不需要召唤,那么将使用攻击技能

最后,激活技能使用AbilityTag去激活

以下是完整节点

如果需要修改剩余仆从数量继续召唤的值,我们可以创建一个变量,在行为树中去修改

接着进入行为树中,将之前的攻击节点替换掉,并修改配置项

接着,我们进入召唤技能蓝图,在召唤技能蓝图里,我们在每生成一个仆从后,将角色仆从数量加1

那么,如何实现仆从死亡时,减少数量呢,我们添加监听事件,监听仆从的销毁事件,在其被销毁掉时,将仆从数量减1

然后绑定销毁事件,在销毁事件触发时,减少一个数量

接着就可以运行效果,如果萨满能带着五个小弟干你,证明没有问题

当然,你还要测试将它小弟都解决以后,能不能重新召唤。贴一下完成召唤技能节点

相关推荐
哎呦哥哥和巨炮叔叔9 小时前
虚幻引擎 5.5 能否取代 V-Ray?现代建筑可视化渲染技术对比解析
ue5·实时渲染·虚幻引擎5·建筑可视化·渲染101云渲染·v-ray渲染·建筑效果图
zhangzhangkeji11 小时前
UE5 多线程(4):资源竞争与原子变量。UE 建议使用 STL版本的原子量,不用自己版本的原子量 TAtomic<T> 的实现了
ue5
AI视觉网奇12 小时前
ue slot 插槽用法笔记
笔记·学习·ue5
lllljz12 小时前
Blender导出模型到Unity或UE5引擎材质丢失模型出错
unity·ue5·游戏引擎·blender·材质
AI视觉网奇12 小时前
blender fbx 比例不对 比例调整
笔记·学习·ue5
哎呦哥哥和巨炮叔叔12 小时前
Unreal Engine 是否支持光线追踪?UE5 光线追踪原理与性能解析
ue5·unreal engine·光线追踪·lumen·实时渲染·渲染101云渲染·ue云渲染
zhangzhangkeji12 小时前
UE5 多线程(3):线程退出与单例线程
ue5
AI视觉网奇13 小时前
static mesh 转skeleton mesh
笔记·学习·ue5
AI视觉网奇1 天前
metahuman 购买安装记录
笔记·学习·ue5
速冻鱼Kiel1 天前
虚幻状态树解析
ue5·游戏引擎·虚幻