64. UE5 RPG 创建新的双手攻击怪物
在上一篇文章中,我们实现了新的功能,现在可以创建多个普通攻击动画,并且可以根据你所使用的普通攻击动画,设置不同的攻击位置。比如,你使用武器,那么攻击位置需要从武器上获取,如果你没有持有武器,使用双手攻击,那么,需要从双手中的某一只去获取攻击位置。
在这一篇文章中,我们增加一个新的敌人,它没有武器,靠双手攻击,我们给它两个攻击动画,一个是左手攻击,另一个是右手攻击,来测试我们之前实现的功能是否隐藏了某些bug。而且还能回忆一下之前是如何创建一个敌人的所有数据的。
创建角色蓝图和动画蓝图
首先,创建一个新的文件夹,新的怪物是食尸鬼所以我们新的文件夹取名Ghoul
所有的敌人都是继承于敌人蓝图基类,我们基于它创建子蓝图类
相应的,我们也需要一个动画蓝图子蓝图
使用的骨架选择食尸鬼的骨架
将创建的这两个蓝图拖入到Ghoul文件夹中
打开蓝图,设置食尸鬼的模型
然后修改它的朝向和位置,注意蓝色箭头,那是正前方的方向,我们再适当修改一下胶囊体
在动画蓝图这里,我们需要设置它的混合控件,就是角色根据速度改变移动的动画
我们右键新建一个混合控件
选择食尸鬼的骨架
改名为BS_Ghoul_IdleRun,用来设置混合待机和移动的混合空间
打开设置一个速度的水平坐标
把动画拖入进入,按Shift键,可以吸附到固定位置,按ctrl可以查看过渡效果,按ctrl+alt键可以查看混合的比例。
按照之前的做法把平滑设置为4,这样行为树切换的时候,也不会显得很生硬。
创建完成,设置到食尸鬼的动画蓝图内
然后将修改后的动画蓝图设置给角色蓝图
制作角色使用蒙太奇
我们将角色使用蓝图和动画蓝图制作完成以后,下一步就是制作角色使用的攻击蒙太奇和受击蒙太奇
创建蒙太奇在动画身上创建即可
我们先创建受击蒙太奇,将其命名为AM_HitReact_Ghoul
按照之前的做法,不需要额外制作其它内容,设置上去
对于攻击动画蒙太奇,我们需要添加骨骼插槽,来用于获取攻击时的伤害范围,我们要打开它的骨骼,然后在骨骼需要的位置添加插槽
在左右手上添加一个插槽
如果感觉位置有问题,还可以调整插槽的位置,这样我们就有了获取攻击范围的骨骼插槽位置了。
我们创建攻击左右手的两个蒙太奇
攻击动画必须要设置支持根运动
按照之前的做法,我们需要添加两个事件,一个是Motion Wraping攻击旋转朝向的事件,另一个是对攻击造成伤害的通知。(这里有个小技巧,你如果在拖拽范围的时候,需要实时查看动作,可以按住shift键,动画会跟随你的拖拽进行移动)
MotionWarping的设置还是老一套,只修改朝向,事件为FacingTarget
通知这里是我们之前写的标签通知,这里修改Tag即可
蒙太奇创建完成,我们就可以设置角色的攻击蒙太奇,它可以增加两个,分别是左右手的攻击
其它注意事项
有些我们直接从敌人基类继承过来的,实际上需要我们注意的,虽然我们修改成了默认值
角色类型我们设置为战士
添加AI行为树
添加转向MotionWarping组件,和设置事件,这些都是我们在敌人基类实现的
修改移动速度,我们在角色基类代码里面,将BaseWalkSpeed修改为可蓝图更改
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Combat")float BaseWalkSpeed = 250.f; //当前角色的最大移动速度
然后在蓝图中修改移动速度
还有就是敌人的标签,用于区分敌我
角色的旋转,我们默认设置的是旋转朝向运动方向,这里还可以调整旋转速率
记得关闭使用控制器控制旋转
一些需要处理的问题
就是我们在触发攻击后就结束了技能,其实在某些情况下,它还没有把动画播放完成,所以,我们将触发事件后结束技能事件节点删除
因为我们在蒙太奇结束时,调用了触发结束技能
处理敌我不分的问题
我们现在还没有实现判断攻击的角色是否为友军,所以,我们接下来要实现这个功能。
要实现这个功能不难,我们之前在角色身上设置的定义标签,可以以此来实现此功能,我们可以在蓝图中,使用ActorHasTag来判断攻击到的敌人是否包含此标签来规避伤害到友军
如果在蓝图中实现这个功能会连成盘丝洞,所以,我们在代码中实现它,在蓝图函数库中创建一个函数,用于传入两个Actor判断它们是否为友军,我们增加一个函数,用于判断双方是否为敌对势力,这里我们修改成BlueprintPure,让其成为没有引脚的静态函数。
//获取双方是否为敌对势力UFUNCTION(BlueprintPure, Category="RPGAbilitySystemLibrary|GameplayMechanics")static bool IsNotFriend(AActor* FirstActor, AActor* SecondActor);
接下来在实现中,如果第一个Actor含有Player标签,那么需要判断第二个角色不包含Player标签,那么它们就是敌人。我们这种后续还可以扩展,比如增加更多的势力,可以在这里更新。
bool URPGAbilitySystemBlueprintLibrary::IsNotFriend(AActor* FirstActor, AActor* SecondActor)
{if(FirstActor->ActorHasTag("Player")){return !SecondActor->ActorHasTag("Player");}if(FirstActor->ActorHasTag("Enemy")){return !SecondActor->ActorHasTag("Enemy");}return false;
}
在攻击技能蓝图中,增加判断是否为敌对势力
添加溶解材质
我们还需要添加死亡时,敌人尸体溶解掉的效果,按照之前的创建方式
材质这里修改成Masked模式
将溶解节点拷贝进来,连上自发光和Mask的线,注意,基础材质要保证它是正常渲染的。
然后基于材质创建一个材质实例
在材质实例里面修改溶解的开始和结束,这样,方便一个参数修改溶解
调整完成,Dissolve在0时,是正常显示
保证调整Dissolve数值为1时,完全溶解掉
将材质设置给食尸鬼蓝图,它没有武器,所以我们不需要设置武器
运行查看击杀后,是否溶解效果正确
相关文章:
64. UE5 RPG 创建新的双手攻击怪物
在上一篇文章中,我们实现了新的功能,现在可以创建多个普通攻击动画,并且可以根据你所使用的普通攻击动画,设置不同的攻击位置。比如,你使用武器,那么攻击位置需要从武器上获取,如果你没有持有武…...
(求一个整数各位数的和)编写程序,读取一个在0和1000之间的整数,并将该整数的各位数字相加。例如:整数是 932,各位数字之和为14。
(求一个整数各位数的和)编写程序,读取一个在0和1000之间的整数,并将该整数 的各位数字相加。例如:整数是 932,各位数字之和为14。 提示:利用操作符%分解数字,然后使用操作符/去掉分解出来的数字。例如: 932%10-2 932/10-93。下面是一个运行示…...
大模型参加高考,同写2024年高考作文,及格分(通义千问、Kimi、智谱清言、Gemini Advanced、Claude-3-Sonnet、GPT-4o)
大家好,我是章北海 今天高考,上午的语文结束,市面上又要来一场大模型参考的文章了。 我也凑凑热闹,让通义千问、Kimi、智谱清言一起来写一下高考作文。 公平起见,不加任何其他prompt,直接把题目甩过去。…...
【因果推断python】24_倾向得分2
目录 倾向加权 倾向得分估计 倾向加权 好的,我们得到了倾向得分。怎么办?就像我说过的,我们需要做的就是以此为条件。例如,我们可以运行一个线性回归,它仅以倾向得分为条件,而不是所有的 X。现在ÿ…...
部件库(Widget Factory)
部件库(Widget Factory) 部件库,也被称为Widget Factory,是一个强大的工具,用于创建、存储和管理可重用的软件组件。在本文中,我们将深入探讨部件库的概念、重要性、以及如何在现代软件开发中使用它。 什么是部件库? 部件库是一个集合,其中包含了各种预先构建的软件…...
tomcat启动闪退解决办法
检查端口冲突: Tomcat默认使用8080端口,如果该端口已被其他应用占用,Tomcat将无法启动。解决办法:更改Tomcat使用的端口号或关闭占用该端口的其他应用。 更改Tomcat端口号:打开Tomcat安装目录下的conf文件夹࿰…...
OpenStack云平台管理
OpenStack云平台管理 文章目录 OpenStack云平台管理资源列表基础环境一、部署Openstack二、创建网络和路由2.1、删除默认的网络2.2、创建网络和路由2.2.1、创建外部网络2.2.2、创建内部网络 2.3、创建路由 三、创建实例3.1、配置实例3.2、配置NAT转换 四、绑定浮动IP地址五、添…...
内部类(超详细)
内部类 一:初始内部类 (1)什么是内部类? 类的五大成员:属性、方法、构造方法、代码块、内部类 举例:在A类的内部定义B类,B类就被称为内部类 public class Outer {// 外部类public class Inter {// 内部类} } public class Test {// 外部其他类public static void m…...
Android的SELinux详解
标签: Android的SELinux详解; SELinux;Enforcing; Android的SELinux详解 概述 SELinux(Security-Enhanced Linux)是一个Linux内核模块和用户空间工具的集合,提供强制访问控制(MAC)机制。Android引入SELinux以增强系统的安全性,通过限制进程的权限来减少安全漏洞的…...
R语言中的列表list
基础 在R语言中的最常用的向量有两种: 第一种,原子向量 像字符型向量,数值型向量,逻辑型向量这些,它们共有的一个特点是,向量里面的值是同质的。当你用数值型向量时,里面所有值都是数值型的。…...
10、有条件提前退出关键字Return From Keyword If【robot framework】
在 Robot Framework 中,Return From Keyword If 是一个有用的关键字,它允许你在特定条件下从关键字中返回。这在需要在满足某个条件时提前退出关键字的情况下特别有用。 以下是 Return From Keyword If 的语法和使用示例: 语法 Return From…...
JAVA开发的一套(智造制造领航者云MES系统成品源码)saas云MES制造执行系统源码,全套源码,支持二次开发
JAVA开发的一套(智造制造领航者云MES系统成品源码)saas云MES制造执行系统源码,全套源码,支持二次开发 1990年11月,美国先进制造研究中心AMR(Advanced Manufacturing Research)就提出了MES&#…...
探究JSON和XML:两种常见的数据交换格式之异同
在软件开发和数据交换领域,JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛使用的数据交换格式。它们都具有将数据结构化并在不同系统之间进行传输和解析的能力,但在实际应用…...
SQL查询的优化方案
SQL查询优化是一个重要的数据库管理任务,它可以帮助提升查询性能,减少响应时间和系统资源消耗。以下是一些关键的优化策略及其示例: 1. 使用索引 (Indexing) 优化说明: 索引能够显著加快数据检索速度,特别是对于大表上的查询。为…...
【C语言题解】1、写一个宏来计算结构体中某成员相对于首地址的偏移量;2、写一个宏来交换一个整数二进制的奇偶位
🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🌈感谢大家的阅读、点赞、收藏和关注 💕希望大家喜欢我本次的讲解💕 目录👑 1、写一个宏,计算结构体中某变量相对于首地址的偏…...
LabVIEW阀性能试验台测控系统
本项目开发的阀性能试验台测控系统是为满足国家和企业相关标准而设计的,主要用于汽车气压制动系统控制装置和调节装置等产品的综合性能测试。系统采用工控机控制,配置电器控制柜,实现运动控制、开关量控制及传感器信号采集,具备数…...
Flutter 中的 LayoutBuilder 小部件:全面指南
Flutter 中的 LayoutBuilder 小部件:全面指南 Flutter 是一个功能丰富的 UI 框架,它允许开发者使用 Dart 语言来构建高性能、美观的跨平台应用。在 Flutter 的布局系统中,LayoutBuilder 是一个强大的组件,它可以根据父容器的约束…...
webman中创建udp服务
webman是workerman的web开发框架 可以很容易的开启udp服务 tcp建议使用gatewayworker webman GatewayWorker插件 创建udp服务: config/process.php中加入: return [// File update detection and automatic reloadmonitor > [ ...........], udp > [handler > p…...
Vue 学习笔记 总结
Vue.js 教程 | 菜鸟教程 (runoob.com) 放一下课上的内容 Vue练习 1、练习要求和实验2的用户注册一样,当用户输入后,能在下方显示用户输入的各项内容(不需要实现【重置】按钮) 2、实验报告中的实验小结部分来谈谈用JS、jQuery和…...
云计算导论(3)---分布式文件系统
文章目录 1. 概述2. 基本架构3. GFS和HDFS4. 云存储 1. 概述 1. 文件系统是操作系统用来组织磁盘文件的方法和数据结构。 传统的文件系统指各种UNIX平台的文件系统,包括UFS等,它们管理本地的磁盘存储资源,提供文件到存储位置的映射…...
后端进阶-分库分表
文章目录 为什么需要分库为什么需要分表 什么时候需要分库分表只需要分库只需要分表 分库分表解决方案垂直分库水平分库垂直分表水平分表 分库分表常用算法范围算法hash分片查表分片 分库分表模式客户端模式代理模式 今天跟着训练营学习了分库分表,整理了学习笔记。…...
Apple开发者应用商店(AppStore)描述文件及ADHOC描述文件生成
创建AD HOC描述文件 1.选中Profiles,然后点击加号创建 2.创建已注册设备可安装描述文件 3.选择要注册的id 4.选择证书 5.选择设备 6.输入文件名,点击生成 7.生成成功,点击下载...
【Git】修改设置 git 的 username、email
设置全局的本地用户名称和用户邮箱 参考:使用git config --global设置用户名和邮件 git config --global user.name "xxx" git config --global user.email "xxx.com"git config --list git config命令的–global参数,用了这个参数…...
python脚本打包为exe并在服务器上设置定时执行
python脚本打包为exe并在服务器上设置定时执行 1. Python脚本打包2. 将打包好的Python脚本放入服务器3. 在服务器上设置其定时执行 1. Python脚本打包 首先,下载pyinstaller 键盘winR打开终端,输入命令:pip install pyinstaller,…...
STM32-呼吸灯仿真
目录 前言: 一.呼吸灯 二.跑马灯 三. 总结 前言: 本篇的主要内容是关于STM32-呼吸灯的仿真,包括呼吸灯,跑马灯的实现与完整代码,欢迎大家的点赞,评论和关注. 接上http://t.csdnimg.cn/mvWR4 既然已经点亮了一盏灯,接下来就可以做更多实验了, 一.呼吸灯 在上一个的基础上…...
【AI基础】第三步:纯天然保姆喂饭级-安装并运行chatglm2-6b
chatglm2构建时使用了RUST,所以在安装chatglm2之前,先安装RUST。 此系列文章列表: 【AI基础】第一步:安装python开发环境-windows篇_下载安装ai环境python-CSDN博客 【AI基础】第一步:安装python开发环境-conda篇_mini…...
Spring Security系列之Handler
概述 与Spring、Spring MVC、Spring Boot一样,Spring Security里也有很多Handler接口、可以分为两大类,一类是普通的XxxHandler(见名知意),另一类是对应的ServerXxxHandler(RequestRejectedHandler除外&am…...
Thinkphp使用Elasticsearch查询
在Thinkphp中调用ES,如果自己手写json格式的query肯定是很麻烦的。我这里使用的是ONGR ElasticsearchDSL 构建 ES 查询。ongr ElasticsearchDSL 的开源项目地址:GitHub - ongr-io/ElasticsearchDSL: Query DSL library for Elasticsearch。ONGR Elastics…...
开源日志分析平台ELK实战应用
1.开源日志分析平台ELK概述及搭建过程 ELK 是一个开源的日志管理平台,由 Elasticsearch、Logstash 和 Kibana 三个组件组成。这个平台广泛用于实时日志处理和分析。下面简单介绍一下每个组件的作用以及如何搭建一个基本的 ELK 栈。 ELK 组件 Elasticsearch:是一个搜索和分析…...
css基本操作及使用
CSS 的基本简介 什么是 CSS? CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分别的问题 外部样式表可以极大提高工作效率 外部样式表通常存储在 CSS 文件中 …...
嘉兴 网站 建设/福州seo博客
说明:站在巨人肩膀上才能成长得更快高大。像本引文中这样的案例真是不错,虽然仅是个雏形,但它已经向您展示了“保卫萝卜”这样塔防游戏的核心逻辑!!!原文链接: http://www.cocoachina.com/bbs/r…...
珠海十大网站建设公司哪家好/东莞网站推广优化网站
这篇不是我想的,是博客园的老赵想的,很是不错.俺就借过来了.原文是您善于使用匿名函数吗? 我只是把重用的地方封装到一个类里面了 public static class CacheHelper { public delegate bool CacheGetter<TData>(out TData data); public delegate TDa…...
佛山移动网站设计/百度里面的站长工具怎么取消
前言本节使用 StatefulSet 控制器部署一个 MySQL 集群,然后进行宕机测试,观察集群是否可以正常恢复使用并且不丢失数据。实现的集群有如下特征:是一个主从复制的 MySQL 集群1 个主节点, 多个从节点从节点能够水平扩展所有的写操作…...
网页制作技巧/抖音seo运营模式
在xcode里集成了一个单元测试框架OCUnit(在xcode自动生成的头文件里自动实现了SenTestCase的接口,不知道OC和Sen这2个字头有什么来历?),在新建一个工程时,可以自动生成单元测试框架,在如何在原有工程上加入单元测试框架…...
网站营销怎么做/中国品牌策划公司排名
纸张太薄不要扫,非常容易卡纸当纸张薄的时候,每次不要放入太多,很容易因为层叠纸张压力导致滚动拉动单张力度过大,从而卡纸卡纸第一时间叩开“滚轮盖”去掉“自动跳过空白页”勾选,保留空白页这样PDF好编排页码若是全彩…...
温州市网页制作项文静/关键词优化教程
今天在解决爬虫对加密参数的分析时,需要使用到base64解码。但是过程中出现了TypeError:Incorrect padding的错误提示。以下是解决方法,以便查阅。 其实正常使用base64是不会出现问题的,就比如下面的代码。 1 #!usr/bin/env pytho…...