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时,完全溶解掉
在这里插入图片描述
将材质设置给食尸鬼蓝图,它没有武器,所以我们不需要设置武器
在这里插入图片描述
运行查看击杀后,是否溶解效果正确
在这里插入图片描述

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

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

相关文章

把文件从一台linux机器上传到另一台linux机器上

文章目录 1,第一种情况1.1 先测试2台机器是否可以互相通信1.2 对整个文件夹里面的所有内容进行传输的命令1.3 检查结果 2,第二种情况2.1,单个文件传输的命令 1,第一种情况 我这里有2台linux机器, 机器A:19…

高科技IT企业适合平滑替代FTP升级方案有哪些?

随着信息技术的飞速发展,传统的文件传输协议FTP已经逐渐不能满足现代企业的需求。特别是对于高科技IT企业来说,他们需要的不仅仅是一个简单的文件传输工具,而是一个能够提供高速、安全、稳定、易管理且兼容性强的解决方案。那么,在…

数学建模 —— 聚类分析(3)

目录 一、聚类分析概述 1.1 常用聚类要素的数据处理 1.1.1 总和标准化 1.1.2 标准差标准化 1.1.3 极大值标准化 1.1.4 极差的标准化 1.2 分类 1.2.1 快速聚类法(K-均值聚类) 1.2.2 系统聚类法(分层聚类法) 二、分类统计…

AutoMQ 生态集成 Tigris

Tigris[1]是一个全球分布式的兼容 S3 的对象存储服务,它允许你存储和访问任意数量的数据,具有广泛的使用场景。Tigris 会自动且智能地将数据分布到靠近用户的位置,让用户无需担心数据复制和缓存复杂性。 你可以将 Tigris 用于多种场景&#x…

快速排序——AcWing785.快速排序

AcWing785.快速排序 题目描述 785. 快速排序 - AcWing题库 运行代码 #include <iostream> #include <algorithm> using namespace std; const int N 1e66; int q[N]; void quick_sort(int q[], int l, int r) {if (l > r) return;int m l r >> 1;//…

LeetCode刷题之HOT100之不同路径

2024/6/6 小雨&#xff0c;没停。明天就要高考啦&#xff0c;回想五年前我也带着紧张与期待走过这些天&#xff0c;祝高考学子一切顺利。Anyway&#xff0c;早上一到实验室我就去看望我的栀子花&#xff0c;带着满怀的期待去看它长大了多少&#xff0c;是的&#xff0c;花苞还在…

《开源模型食用指南》基于Linux环境快速部署开源模型,更适合中国宝宝的部署教程

今天给大家推荐一个非常适合中国宝宝学习的专属大模型教程&#xff0c;也就是它《开源模型食用指南》&#xff01; 当前百模大战正值火热&#xff0c;开源LLM层出不穷。 如今国内外已经涌现了众多优秀开源LLM&#xff0c;国外如LLaMA、Alpaca&#xff0c;国内如ChatGLM、BaiCh…

想了解Prompt 技术?看这篇就够了!

最近看了 Meta-Prompt&#xff0c;发现 Prompt 的技术已经发展了几代了。真的要好好梳理一下了。首先是官方有 一个自己的 Prompt engineer &#xff0c; 这个是一定要认真学习的。 https://platform.openai.com/docs/guides/prompt-engineering 官方建议&#xff1a; 写作清…

使用pexpect检查SSH上的文件是否存在

使用 pexpect 模块可以在 Python 中执行命令并检查其输出。你可以使用 ssh 命令连接到远程服务器&#xff0c;并执行 ls 命令检查文件是否存在。下面我就列举几个我经常遇到的几个错误并做个详细的解决方案。 1、问题背景 用户需要编写一个 Python 脚本&#xff0c;以检查一个…

python面向过程与初始面向对象编程

让我们穿越到《龙珠》世界&#xff0c;一起揭开 面向对象编程 的神秘面纱吧。 面向过程编程与面向对象编程 天下第一武道会 选手登记 第 22 届天下第一武道会即将召开&#xff0c;各路武术高手齐聚一堂&#xff0c;其中最受瞩目的&#xff0c;当属卡卡罗特&#xff08;孙悟…

我的创作纪念日--我和CSDN一起走过的1825天

机缘 第一次在CSDN写文章&#xff0c;是自己在记录学习Java8新特性中Lambda表达式的内容过程中收获的学习心得。之前也有记录工作和生活中的心得体会、难点的解决办法、bug的排查处理过程等等。一直都用的有道笔记&#xff0c;没有去和大家区分享的想法&#xff0c;是一起的朋…

C++第二十四弹---从零开始模拟STL中的list(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、基本结构 2、基本函数实现 2.1、默认构造函数 2.2、尾插数据 3、迭代器的封装 3.1、迭代器的基本结构 3.2、迭代器重载函数的实现 4、迭…

大家都在用的4款超实用视频剪辑软件,快来码住自用吧!

随着自媒体行业的不断发展&#xff0c;不少小伙伴也逐渐步入了短视频的热潮。对于短视频制作来说&#xff0c;视频剪辑软件的选择非常重要。 如果剪辑软件不够好&#xff0c;整个视频就基本垮掉了。今天就给大家推荐4款好用的视频剪辑软件。 1.牛学长视频剪辑 推荐剪辑新手入门…

win11通过网线分享网络到Ubuntu工控机

1.条件&#xff1a;一个能无线联网的win11&#xff0c;一根网线&#xff0c;一台Ubuntu工控机&#xff0c;并且使用网线连接两者 2.在win11电脑上 2.1 打开控制面板的网络和Internet 2.2 进入网络和共享中心&#xff0c;在左侧进入 更改适配器设置 2.3 在WLAN上右键&#xff0…

如何通过Python SMTP配置示例发附件邮件?

Python SMTP配置的步骤&#xff1f;SMTP服务器的优缺点有哪些&#xff1f; 当我们需要发送包含附件的邮件时&#xff0c;自动化的解决方案显得尤为重要。Python提供了SMTP库&#xff0c;使我们能够轻松配置并发送带有附件的邮件。AokSend将通过一个示例来展示如何操作&#xf…

AIGC会带来失业潮吗?紧紧跟时代第一步,如何学习AIGC

会&#xff0c;但AI淘汰的始终是跟不上时代的人。 现在很多公司都有AI培训&#xff0c;不仅GPT&#xff0c;还有Midjourney、Stable DIffusion等一系列AI工具。 像我们公司虽然今年招的少&#xff0c;但也会对新招的应届生统一进行AI培训。 用任正非先生的话来说就是&#x…

【ARM】PK51-如何添加芯片型号的方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 遇到打开工程提示没有该芯片设备提示如何解决。 2、 问题场景 客户发来一个工程文件&#xff0c;打开后软件提示没有发现该芯片设备提示。 图 1 3、软硬件环境 1&#xff09;、软件版本&#xff1a;keil μvision…

弗莱明发现青霉素

1945年&#xff0c;弗莱明因青霉素获诺贝尔医学奖。在弗莱明之前有多人注意到了青霉能抑制细菌的生长&#xff0c;但是他们没有一个人像弗莱明那样做进一步的更深入的研究&#xff0c;更没有一个人像弗莱明那样确定了这个特殊的现象是由于青霉分泌的某种物质所致。所以&#xf…

CAD入门基础

一&#xff0c;新建一个CAD文件 1.新建文件 2.保存为.dwt文件 3.画直线 点击直线图标画直线&#xff0c;选中直线出现高亮&#xff0c;点击左键&#xff0c;出现" 取消 " 就是可以画下一条线段了 " 删除"就可以了删除了。 3、直接删除法 1. 首先&#xf…

【C++】C++提供类型转换的机制

目录 前言&#xff1a; 一&#xff0c;static_cast 二&#xff0c;reinterpret_cast 三&#xff0c;const_cast 四&#xff0c;dynamic_cast 前言&#xff1a; 传统的不同类型转换有隐式类型转换&#xff08;类型不匹配时编译器自动进行的转换&#xff0c;如&#xff1a;i…