19. UE5 RPG使用GameplayEffect的Attribute Based Modifiers

news2024/11/24 14:47:59

前几篇文章我也说了GE的基础使用,但是,对一些属性的应用没有述说,后续,我将一点一点的将它们如何使用书写下来。
这一篇,主要就讲解一下Attribute Based Modifiers使用,先说一下它的应用场景,一般游戏里面,都有属性和属性之间的联系的东西,比如体力可以加血量上限,智力可以增加蓝量上限这种,它会根据职业或者角色的不同,按不同的比例增加,如果需要实现这种方式时,我们就可以通过使用Attribute Based Modifiers去实现。

创建可以交互的Actor触发GE

这是在之前的文章中实现的一个类,用于角色在和Actor交互时,会给角色应用一个GE。如果不熟悉的小伙伴可以翻一翻我之前的文章查看。

首先创建一个蓝图用于测试。
在这里插入图片描述
组件这里添加一个碰撞体,用于触发事件
在这里插入图片描述
在碰撞体重叠事件时,调用类里的重叠事件即可
在这里插入图片描述
至于设置GE,我们在类默认值这里设置
在这里插入图片描述
记得将碰撞体的在游戏中隐藏关闭,我们在游戏中也能够看到碰撞体
在这里插入图片描述

创建GE

我们先创建一个GE,然后在GE的Modifiers这里添加对最大血量的修改,然后Magnitude Calculation Type 修改为Attribute Based,下面的Backing Attribute属性设置为Vigor。操作为从目标身上获取到Vigor属性的值,然后乘以Coefficient的值,添加到最大血量身上。
在这里插入图片描述
接下来,将其添加给Actor,点击~,输入showdebug abilitysystem,左侧将显示现在角色身上的属性
在这里插入图片描述
接着将角色和碰撞体交互,我设置的体力值是23,现在得最大血量变成了100+23
在这里插入图片描述
当前的结果变化是,Vigor * Coefficient + MaxHealth 得到了现在得结果。

接下来,再加一个数组项,还是对最大血量进行操作,这里我们使用的乘的操作,Coefficient设置为0.5, Backing Attribute的属性使用Strength
在这里插入图片描述
在上一条设置完成后,最大血量是123,Strength的值是20,预测结果是 123* (20 * 0.5)= 1230
在这里插入图片描述
结果和预想的一样,除法也一致,这里就不在赘述。

使用Pre Multiply Additive Value 和 Post Multiply Additve Value

我们在应用的时候,会发现Coefficient下面有两个数值
在这里插入图片描述
那么,这两个数值有何用处呢,我这里不卖关子了,再次增加一条Modifiers,这次使用除法,Coefficient设置为4,Pre Multiply Additive Value设置为9,Post Multiply Additve Value设置为3。
这两个值应用的计算公式是,当前值 / (Coefficient (Intelligence + Pre)+ Post)
在这里插入图片描述
将上面的公式带入,这个Modifier没用应用前的MaxHealth是1230,那么结果就是 1230/(4
(21+9)+3) = 10 ,showdebug abilitysystem的测试结果和预想的一致。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1522490.html

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

相关文章

使用Laravel安装器创建项目

使用Laravel安装器创建项目,使用Laravel安装器创建前先确保你的机器上已经下载了Laravel安装程序,可以通过终端界面查询是否下载了Laravel安装器,在终端中输入Laravel 查询,如下图所示则已下载Laravel安装程序,&#x…

macOS系统中通过brew安装MongoDB

Macos 修改目录权限: sudo chmod -R 777 你的文件夹 本文使用homebrew进行安装简单,因为从官网下载安装包并手动安装需要移动安装包到合适的目录下并配置环境变量等一大堆操作后才能使用数据库(若没有安装过brew请自行百度进行安装brew&am…

基于粒子群算法的分布式电源配电网重构优化matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1基本PSO算法原理 4.2配电网重构的目标函数 5.完整工程文件 1.课题概述 基于粒子群算法的分布式电源配电网重构优化。通过Matlab仿真,对比优化前后 1.节点的电压值 2.线路的损耗,这里计…

十四、自回归(AutoRegressive)和自编码(AutoEncoding)语言模型

参考自回归语言模型(AR)和自编码语言模型(AE) 1 自回归语言模型( AR) 自回归语言模型(AR)就是根据上文内容(或下文内容)预测下一个(或前一个&…

计算机网络(7)----应用层

目录 一.应用层的基本概念 1.应用层的基本概述 2.网络应用模型 (1)客户/服务器模型 (2)P2P模型 二.应用程序相关 1.DNS系统 (1)域名与域名服务器 (2)域名解析过程&#xff…

基于Java的无代码动态表单系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 动态类型模块2.2 动态文件模块2.3 动态字段模块2.4 动态值模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 动态类型表3.2.2 动态文件表3.2.3 动态字段表3.2.4 动态值表 四、系统展示五、核心代码5.1 查询档案类型5.…

农发行鱼台县支行组织开展3.15金融消费者权益保护教育宣传活动

为切实提升消费者金融素养及风险防范意识,3月15日农发行鱼台县支行组织开展以“金融消保在身边 保障权益防风险”为主题的“3.15”金融消费者权益保护教育宣传活动。 本次活动,该行重点围绕普及消费者八项基本权利、宣传金融纠纷多元化解机制、强化“三适当“原则、夯实诚信文…

sparksession对象简介

什么是sparksession对象 spark2.0之后,sparksession对象是spark编码的统一入口对象,通常我们在rdd编程时,需要SparkContext对象作为RDD编程入口,但sparksession对象既可以作为RDD编程对象入口,在sparkcore编程中可以通…

【LeetCode热题100】146. LRU 缓存(链表)

一.题目要求 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&#xff0c…

RISC-V 编译环境搭建:riscv-gnu-toolchain 和 riscv-tools

RISC-V 编译环境搭建:riscv-gnu-toolchain 和 riscv-tools 编译环境搭建以及说明 操作系统:什么系统都可以 虚拟机:VMmare Workstation Pro 17.50.x (版本不限) 编译环境:Ubuntu 18.04.5 CPU:i7-8750h(虚拟机分配4核…

Vue+SpringBoot打造教学过程管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 教师端2.2 学生端2.3 微信小程序端2.3.1 教师功能如下2.3.2 学生功能如下 三、系统展示 四、核心代码4.1 查询签到4.2 签到4.3 查询任务4.4 查询课程4.5 生成课程成绩 六、免责说明 一、摘要 1.1 项目介绍 基于JAVAVu…

数据结构的概念大合集04(队列)

概念大合集04 1、队列1.1 队列的定义1.2队列的顺序存储1.2.1 顺序队1.2.2 顺序队的基本运算的基本思想1.2.3 顺序队的4要素的基本思想 1.3 环形队列1.3.1 环形队列的定义1.3.1 环形队列的实现 1.4 队列的链式存储1.4.1 链队1.4.2 链队的实现方式1.4.3 链队的4要素的基本思想 1.…

inux(CentOS)/Windows-C++ 云备份项目(项目文件操作工具类设计,完成项目基本文件操作-读写-压缩-目录操作)

文章目录 1. 项目文件操作工具类设计 1. 项目文件操作工具类设计 根据前面的分析,这个文件类的基本属性如下: 文件大小信息文件最后修改时间文件最后一次访问时间,方便文件的热点管理文件名称,需要从http 请求行上的uri中获取基…

【机器学习-02】矩阵基础运算---numpy操作

在机器学习-01中,我们介绍了关于机器学习的一般建模流程,并且在基本没有数学公式和代码的情况下,简单介绍了关于线性回归的一般实现形式。不过这只是在初学阶段、为了不增加基础概念理解难度所采取的方法,但所有的技术最终都是为了…

FFmpeg转码参数说明及视频转码示例

-b : 设置音频或者视频的转码码率 -b:v 只设置视频码率 -b:a 只设置音频码率 -ab: 只设置音频码率, 默认码率大小为: 128k bit/s -g: 设置视频GOP大小,表示I帧之间的间隔,默认为12 -ar: 设置音频采样率,默认0 -ac: 设置音频通道数量 默认0 -bf: 设置连…

服务器机器学习环境搭建(包括AanConda的安装和Pytorch的安装)

服务器机器学习环境搭建 1 服务器与用户 在学校中,我们在学校中是以用户的身份进行访问学校的服务器的。整体框架大致如下: 我们与root用户共享服务器的一些资源,比如显卡驱动,Cuda以及一些其他的公共软件。 一般情况下&#…

Vue2在一个页面内动态切换菜单显示对应的路由组件

项目的需求是在一个页面内动态获取导航菜单,导航菜单切换的时候显示对应的路由页面,类似于tab切换的形式,切换的导航菜单和页面左侧导航菜单是同一个路由组件,只是放到了一个页面上,显示的个数不同,所有是动…

Docker----Dockerfile构建微服务镜像

目录 一、关键步骤 二、具体步骤 1、准备后端jar包(这里以java后端演示) 2、编写Dockerfile 3、构建镜像 4、运行镜像容器 5、测试是否成功 一、关键步骤 1、准备后端jar包(这里以java后端演示) 2、编写Dockerfile 3、构建镜像 4、运行镜像容器 5、测试是否成功 二…

C#,图论与图算法,图(Graph)的数据结构设计与源代码

因为后面即将发布的大量有关“图”的算法与源代码都需要用到下面的这些基础数据,为避免大家去下载,特意先发布于此。 一、图(Graph)的基础知识 图(Graph)是一组对象的图示,其中一些对象对通过链…

STM32(TIM定时器中断)

理论知识 定时器定时中断 接线图 定时器工作配置步骤 定时中断和内外时钟源选择 定时器中需要使用的函数 程序实现效果: void TIM_DeInit(TIM_TypeDef* TIMx); **// 恢复定时器的缺省配置**void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef*TIM…