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

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

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

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

相关推荐
会思考的猴子8 小时前
UE5 03-物体碰撞检测
ue5
多方通行88 小时前
UE5材质之HLSL:深度
开发语言·算法·ue5·图形渲染·材质
会思考的猴子8 小时前
UE5 01-给子弹一个跟角色一致的向前的方向的冲量
ue5
一只脚走路的猫1 天前
【UE5.3】笔记6-第一个简单小游戏
笔记·ue5
大二初学生4 天前
UE5(c++)开发日志(2):向日志和屏幕输出信息/将C++类变为蓝图类
ue5
一只脚走路的猫4 天前
【UE5.3】笔记3-静态网格体,BSP
笔记·ue5
多方通行85 天前
UE5蓝图快速实现打开网页与加群
开发语言·ue5·编辑器·ue4·脚本
黑不溜秋的5 天前
UnrealEngine - 从源码编译UE5的步骤
ue5
暮志未晚Webgl5 天前
76. UE5 RPG 实现场景阻挡剔除功能
数码相机·ue5
人才程序员6 天前
UE5的安装与基本操作(一)
c++·游戏·ue5·游戏引擎·游戏程序·蓝图·游戏策划