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

发布于:2024-06-24 ⋅ 阅读:(57) ⋅ 点赞:(0)

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

优化召唤物的朝向

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

添加相关代码

我们接下来,想实现在召唤师召唤了一定数量的仆从后,将不再继续召唤仆从,转而使用攻击技能攻击玩家。那么,它就需要拥有两个技能,一个攻击技能和一个召唤技能。
要区分触发的技能,我们需要给它设置不同的标签,攻击的标签现在是Attack,那么我们需要增加一个召唤技能触发的标签。
我们通过代码再添加一个标签

FGameplayTag Abilities_Summon; //召唤技能激活标签

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

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

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

	UPROPERTY(BlueprintReadOnly, Category="Combat")
	int32 MinionsCount = 0; //仆从数量

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

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

在角色基类里覆写它

virtual int32 GetMinionCount_Implementation() override;

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

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

然后在角色基类中覆写

virtual void IncrementMinionCount_Implementation(const int32 Amount) override;

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

void ARPGCharacter::IncrementMinionCount_Implementation(const int32 Amount)
{
	MinionCount += Amount;
}

创建新的行为树和任务

上面,我们增加一些代码,用来实现需求,可以获取也可以设置角色所拥有的仆从的数量。我们还需要创建一个新的行为树,用于修改召唤师敌人的AI逻辑,然后增加一个新的任务,在里面实现是使用召唤技能增加仆从还是使用攻击技能攻击玩家。
我们首先将之前制作的行为书复制一份去修改
在这里插入图片描述
设置好用于元素师专用的行为树
在这里插入图片描述
然后将萨满使用的行为树修改掉
在这里插入图片描述
接着在数据里面给元素师类型的数据添加上攻击技能,这样,在通过标签触发技能的时候,攻击技能就可以通过Attack标签触发,召唤技能可以通过Summon标签触发
在这里插入图片描述
我们将召唤技能的标签修改成召唤标签
在这里插入图片描述
准备工作完成,接下来,我们将修改行为树,我们需要将行为树中的攻击任务修改掉,将其修改成能功判断使用召唤技能还是攻击技能
在这里插入图片描述
接下来,我们复制一个攻击任务,在此基础上扩展
在这里插入图片描述
命名为BTT_Attack_Elementalist
在这里插入图片描述
我们在任务里面新增两个属性标签,一个召唤激活标签,用于激活召唤技能使用,另一个是技能标签,我们通过逻辑修改,激活时,使用它去激活
在这里插入图片描述
我们修改逻辑,增加对于召唤师仆从的数量进行判断,如果小于1, 将进行再次召唤
在这里插入图片描述
true分支是激活召唤技能,false是不需要召唤,那么将使用攻击技能
在这里插入图片描述
最后,激活技能使用AbilityTag去激活
在这里插入图片描述
以下是完整节点
在这里插入图片描述
如果需要修改剩余仆从数量继续召唤的值,我们可以创建一个变量,在行为树中去修改
在这里插入图片描述
接着进入行为树中,将之前的攻击节点替换掉,并修改配置项
在这里插入图片描述
接着,我们进入召唤技能蓝图,在召唤技能蓝图里,我们在每生成一个仆从后,将角色仆从数量加1
在这里插入图片描述
那么,如何实现仆从死亡时,减少数量呢,我们添加监听事件,监听仆从的销毁事件,在其被销毁掉时,将仆从数量减1
在这里插入图片描述
然后绑定销毁事件,在销毁事件触发时,减少一个数量
在这里插入图片描述
接着就可以运行效果,如果萨满能带着五个小弟干你,证明没有问题
在这里插入图片描述
当然,你还要测试将它小弟都解决以后,能不能重新召唤。贴一下完成召唤技能节点
在这里插入图片描述