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

news2025/1/22 15:10:29

第九章 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.coloradmin.cn/o/2280424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cursor重构谷粒商城05——docker容器化技术快速入门【番外篇】

前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速进阶到中高阶程序员。 本项目将基于谷粒商城…

【FPGA】MIPS 12条整数指令【1】

目录 修改后的仿真结果 修改后的完整代码 实现bgtz、bltz、jalr 仿真结果&#xff08;有问题&#xff09; bltz------并未跳转&#xff0c;jCe&#xff1f; 原因是该条跳转语句判断的寄存器r7&#xff0c;在该时刻并未被赋值 代码&#xff08;InstMem修改前&#xff09; i…

洛谷题目:P2742 [USACO5.1] 圈奶牛Fencing the Cows /【模板】二维凸包 题解 (本题较难)

题目传送门&#xff1a;P2742 [USACO5.1] 圈奶牛Fencing the Cows /【模板】二维凸包 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 另&#xff1a;由于一些文章的疏忽&#xff0c;导致一些错别字&#xff0c;代码错误&#xff0c;公式错误导致大家的理解和误导&#xff0c;…

多线程之旅:线程安全问题

之前说到了多线程的创建和一些属性等等&#xff0c;接下来&#xff0c;就来讲讲多线程安全问题。 小编引入这段代码讲解下&#xff1a; public class Demo13 {public static int count0;public static void main(String[] args) throws InterruptedException {Thread t1new…

html学习笔记(3)

一、文本格式标签 效果标签&#xff08;旧版&#xff09;标签&#xff08;语义化&#xff0c;强调&#xff09;加粗<b><strong>倾斜<i><em>下划线<u><ins>删除线<s><del> 前面的标签 b 、 i 、 u 、 s 就仅仅是实现加粗、倾…

Postgresql源码(141)JIT系列分析汇总

JIT的东西比较零散&#xff0c;本篇对之前的一些列分析做个汇总、整理。 涉及&#xff1a; 《Postgresql源码&#xff08;113&#xff09;表达式JIT计算简单分析》 《Postgresql源码&#xff08;127&#xff09;投影ExecProject的表达式执行分析》 《Postgresql源码&#xff08…

Maven多环境打包方法配置

简单记录一下SpringBoot多环境打包配置方法&#xff0c;分部署环境和是否包含lib依赖包两个维度 目录 一、需求说明二、目录结构三、配置方案四、验证示例 一、需求说明 基于Spring Boot框架的项目分开发&#xff0c;测试&#xff0c;生产等编译部署环境&#xff08;每一个环境…

SDL2基本使用

前言 在这里记录SDL的环境基本搭建和使用&#xff0c;方便回忆。使用该图形库也是为了方便在没有单片机和显示模块的使用&#xff0c;也能对简单验证些关于图形构建或界面管理的猜想和测试&#xff0c;所以下述不会探讨过于深入的东西。当然&#xff0c;也可以通过SDL官网查看介…

【Linux系统编程】—— 从零开始实现一个简单的自定义Shell

文章目录 什么是自主shell命令行解释器&#xff1f;实现shell的基础认识全局变量的配置初始化环境变量实现内置命令&#xff08;如 cd 和 echo&#xff09;cd命令&#xff1a;echo命令&#xff1a; 构建命令行提示符获取并解析用户输入的命令执行内置命令与外部命令Shell的主循…

认识BOM

BOM 弹出层 可视窗口尺寸 屏幕宽高 浏览器内核和其操作系统的版本 剪贴板 是否允许使用cookie 语言 是否在线

[c语言日寄]结构体的使用及其拓展

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…

Linux系统的第一个进程是什么?

Linux进程的生命周期从创建开始&#xff0c;直至终止&#xff0c;贯穿了一个进程的整个存在过程。我们可以通过系统调用fork()或vfork()来创建一个新的子进程&#xff0c;这标志着一个新进程的诞生。 实际上&#xff0c;Linux系统中的所有进程都是由其父进程创建的。 既然所有…

5. 马科维茨资产组合模型+AI金融智能体(qwen-max)识别政策意图方案(理论+Python实战)

目录 0. 承前1. AI金融智能体1.1 What is AI金融智能体1.2 Why is AI金融智能体1.3 How to AI金融智能体 2. 数据要素&计算流程2.1 参数集设置2.2 数据获取&预处理2.3 收益率计算2.4 因子构建与预期收益率计算2.5 协方差矩阵计算2.6 投资组合优化2.7 持仓筛选2.8 AI金融…

PostMan最新版本及离线安装指南

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;PostMan是一款流行的API测试工具&#xff0c;它提供了一个直观的用户界面&#xff0c;方便Web开发者和测试人员进行接口测试。本文将指导你如何安装最新版的PostMan&#xff0c;包括在线安装和离线安装两种方法。…

记录一次k8s起不来的排查过程

我在k8s集群&#xff0c;重启了一个node宿主机&#xff0c;竟然发现kubelet起不来了&#xff01;报错如下 这个报错很模糊&#xff0c;怎么排查呢。这样&#xff0c;开两个界面&#xff0c;一个重启kubelet&#xff0c;一个看系统日志(/var/log/message:centos&#xff0c;/va…

grafana + Prometheus + node_exporter搭建监控大屏

本文介绍生产系统监控大屏的搭建&#xff0c;比较实用也是实际应用比较多的方式&#xff0c;希望能够帮助大家对监控系统有一定的认识。 0、规划 grafana主要是展示和报警&#xff0c;Prometheus用于保存监控数据&#xff0c;node_exporter用于实时采集各个应用服务器的事实状…

2024年博客之星主题创作|从零到一:我的技术成长与创作之路

2024年博客之星主题创作&#xff5c;从零到一&#xff1a;我的技术成长与创作之路 个人简介个人主页个人成就热门专栏 历程回顾初来CSDN&#xff1a;怀揣憧憬&#xff0c;开启创作之旅成长之路&#xff1a;从平凡到榜一的蜕变持续分享&#xff1a;打卡基地与成长复盘四年历程&a…

Golang的网络编程安全

Golang的网络编程安全 一、Golang网络编程的基本概念 作为一种现代化的编程语言&#xff0c;具有优秀的并发特性和网络编程能力。在Golang中&#xff0c;网络编程是非常常见的需求&#xff0c;可以用于开发各种类型的网络应用&#xff0c;比如Web服务、API服务、消息队列等。Go…

【2024年华为OD机试】(C/D卷,200分)- 5G网络建设 (JavaScriptJava PythonC/C++)

一、问题描述 题目描述 现需要在某城市进行5G网络建设&#xff0c;已经选取N个地点设置5G基站&#xff0c;编号固定为1到N。接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通。不同基站之间假设光纤的成本各不相同&#xff0c;且有些节点之间已经存在光纤相连。 …

消息队列篇--原理篇--RabbitMQ和Kafka对比分析

RabbitMQ和Kafka是两种非常流行的消息队列系统&#xff0c;但它们的设计哲学、架构特点和适用场景存在显著差异。对比如下。 1、架构设计 RabbitMQ&#xff1a; 基AMQP协议&#xff1a;RabbitMQ是基于AMQP&#xff08;高级消息队列协议&#xff09;构建的&#xff0c;支持多…