当前位置: 首页 > article >正文

Unreal Engine 5 C++ Advanced Action RPG 九章笔记

第九章 Hero Special Abilities

2-Challenges Ahead(前方的挑战)

  • 本次章节主要解决三件问题
    • 怒气能力
    • 特殊武器能力
    • 治疗石
  • 怒气能力
    • 对于这个能力我们需要处理它的激活和持械状态,当没有怒气时应该取消该能力
    • 当这个能力激活时,我希望角色是进入无敌状态的,不会受到伤害
    • 怒气状态
    • 获得怒气,游戏默认开始时,角色应该有一个空的怒气条,随着角色杀死敌人数量增多,怒气条慢慢填充
      在这里插入图片描述
  • 特殊武器能力
    • 与翻滚相同,我们必须按多个输入键
    • 处理伤害
    • 处理冷却时间
    • UI显示冷却时间
      在这里插入图片描述
  • 治疗石
    • 敌人死后有几率生成
    • 角色有拾取能力,可以使用它来恢复生命和怒气
      在这里插入图片描述

3-Rage Ability Tags(怒气能力)

  • 在开始创建标签之前,微重构一下之前UWarriorAbilitySystemComponent类中的OnAbilityInputPressed函数中的逻辑
    在这里插入图片描述
  • 新建怒气能力的标签
    在这里插入图片描述
    在这里插入图片描述

4-Rage Ability Blueprint

  • 新建怒气这个能力蓝图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 只有装备了武器后才能激活此能力
    在这里插入图片描述
  • 运行结果
    在这里插入图片描述

5-Rage Anim Montage

  • 先制作蒙太奇
    在这里插入图片描述
  • 然后在能力蓝图中进行播放
    在这里插入图片描述
  • 注意在播放蒙太奇时,应当阻止其他的一些能力,例如:近战攻击、翻滚、卸下武器,播放蒙太奇时,是不能使用其他能力的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

6-Rage Gameplay Cue

  • 先解决一个问题,在近战敌人生成武器时,该能力就在之前激活了,这就导致了为什么我们可以在第一帧的时候看见启动武器
    在这里插入图片描述
  • 因此可以在生成武器的时候就隐藏一下

在这里插入图片描述
在这里插入图片描述

  • 继续定义两个标签
    在这里插入图片描述
    在这里插入图片描述
  • 在蒙太奇中监听这个事件,用来使用GC的
    在这里插入图片描述
  • 添加一个GC用来展现视觉效果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 在能力中执行这个GC
    在这里插入图片描述

7-Activation Condition(怒气能力状态下的激活条件)

  • UWarriorAttributeSet中检查当前的怒气值给予相应的标签
    在这里插入图片描述
  • 在能力中添加激活这个能力所需要的的标签,并且当检查怒气值不是满的标签时取消此能力,添加激活无敌的标签
    在这里插入图片描述
  • 在我们应用伤害的GE中添加效果,当拥有无敌这个标签的时候,说明GE应用失败,那么是不会扣血的,也不会受击
    在这里插入图片描述
  • 因为之前逻辑就是这样写的
    在这里插入图片描述
    在这里插入图片描述

8-Consume Rage(消耗怒气)

  • 在角色的曲线表格中新建两个数据,一个用来处理消耗速度,一个处理消耗周期
    在这里插入图片描述
  • 然后新建一个GE用来消耗怒气
    在这里插入图片描述
  • 在GA中进行应用这个GE
    在这里插入图片描述

9-Set Up Rage Slash(设置狂暴砍杀)

  • 在怒气状态下,攻击能产生剑气,并这种攻击会产生更高的伤害
    在这里插入图片描述
  • 继承之前的BP_Projectile Base蓝图,进行修改就行
    在这里插入图片描述

10-Spawn Rage Slash

  • 在角色的轻击基类中创建一个事件,用来当在怒气状态时就生成剑气,这个事件不用写逻辑,在继承的轻击中去写
    在这里插入图片描述
  • 在武器的骨骼中添加插槽,注意这个插槽X轴朝前
    在这里插入图片描述
  • 在角色的轻击GA中去生成剑气
    在这里插入图片描述
  • 在轻击的蒙太奇中通知这个标签
    在这里插入图片描述

11-On Rage Slash Begin Overlap

  • 让剑气可以命中多个敌人,穿透伤害
  • 补齐之前AWarriorProjectileBase类中的OnProjectileBeginOverlap函数逻辑即可
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

12-Rage Slash For All Attacks

  • 将这个剑气攻击添加到所有的轻攻击与重攻击上,看看就行

13-Gain Rage(给予怒气)

  • 新建恢复怒气的数据
    在这里插入图片描述
  • 新建GE,用来恢复怒气
    在这里插入图片描述
  • 然后在轻击与重击命中敌人后应用到了伤害,执行这个GE进行恢复怒气
    在这里插入图片描述

14-Special Weapon Ability Tags(武器的特殊能力,技能)

  • 定义特殊武器能力的标签
    在这里插入图片描述
    在这里插入图片描述
  • 创建能力蓝图,此能力激活时,我们无法使用任何能力,并且是无敌状态
    在这里插入图片描述
  • 新建这个特殊能力的操作,这是个组合按键操作,必须要同时触发两个按键才能释放
    在这里插入图片描述
    在这里插入图片描述
  • 给予能力
    在这里插入图片描述

15-Grant Special Weapon Ability

  • 在标签中添加新的标签作为技能的冷却标识
    在这里插入图片描述
    在这里插入图片描述
  • 新建一个新的结构体,用来存放特殊能力的CD与图标
    在这里插入图片描述
    在这里插入图片描述
  • 修改了FWarriorHeroWeaponData,那么就要去UWarriorAbilitySystemComponent中修改我们之前写的给予角色武器能力函数了
    在这里插入图片描述
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "AbilitySystemComponent.h"
#include "WarriorTypes/WarriorStructTypes.h"
#include "WarriorAbilitySystemComponent.generated.h"

/**
 * 
 */
UCLASS()
class WARRIOR_API UWarriorAbilitySystemComponent : public UAbilitySystemComponent
{
   
	GENERATED_BODY()
	
public:
	void OnAbilityInputPressed(const FGameplayTag& InInputTag);
	void OnAbilityInputReleased(const FGameplayTag& InInputTag);
	
	//	meta = (ApplyLevel = "1")可以给ApplyLevel赋默认值
	UFUNCTION(BlueprintCallable, Category = "Warrior|Ability", meta = (ApplyLevel = "1"))
	void GrantHeroWeaponAbilities(const TArray<FWarriorHeroAbilitySet>& InDefaultWeaponAbilities, const TArray<FWarriorHeroSpecialAbilitySet>& In

http://www.kler.cn/a/509538.html

相关文章:

  • 【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验
  • 编程工具箱(免费,离线可用)
  • mono3d汇总
  • LabVIEW串口通信调试与数据接收问题
  • Adobe与MIT推出自回归实时视频生成技术CausVid。AI可以边生成视频边实时播放!
  • 从AI生成内容到虚拟现实:娱乐体验的新边界
  • 迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序
  • 搜维尔科技提供完整的人形机器人解决方案以及训练系统
  • 机器学习加州房价预测模型报告
  • 华为数据中心CE系列交换机级联M-LAG配置示例
  • 13-1类与对象
  • 【21】Word:德国旅游业务❗
  • 游戏引擎学习第81天
  • 探索 Transformer²:大语言模型自适应的新突破
  • wow-agent---task2使用llama-index创建Agent
  • Ubuntu 空闲硬盘挂载到 文件管理器的 other locations
  • Apache 如何设置 Upgrade-Insecure-Requests 报头 ?
  • 用于零镜头视频对象分割的深度感知测试时训练
  • PyTorch基本功能与实现代码
  • 浙江安吉成新照明电器:Acrel-1000DP 分布式光伏监控系统应用探索
  • vector迭代器的使用以及迭代器失效
  • 非科班转码第5年零241天
  • STM32 物联网智能家居 (五) 设备子系统之点亮LED灯
  • wireshark 网络分析工具
  • 1.5 GPT 模型家族全解析:从 GPT-1 到 GPT-4 的演进与创新
  • Scrapy 爬取 Bangumi 网站的分页与详情页数据