Unreal 5 实现丧尸伤害和死亡

news2024/11/17 10:00:29

这一篇主要是实现玩家攻击丧尸可以造成伤害和自身血量为零时,丧尸可以死亡。丧尸也可以对玩家造成伤害,有攻击范围的判定。
这一篇的功能实现有四个功能:

  1. 丧尸被攻击掉血
  2. 丧尸死亡处理
  3. 玩家被攻击掉血
  4. 玩家死亡处理

丧尸被攻击掉血

子弹的修改

首先在子弹父类里面进行命中事件判断命中的类型是否为丧尸,我们之前在做射击功能时,实现了武器命中静态物体时根据物体表面的材质播放不同的粒子效果。现在需要增加对命中丧尸后的处理。
在这里插入图片描述

在击中丧尸函数里面,首先创建两个粒子特效,一个是血液飞溅的特效,另一个就是血雾的特效,来模拟真实射击后产生的效果
在这里插入图片描述
后面就是一个伤害的判定,从命中结果中获取命中的骨骼名称,如果是头部使用内置节点应用伤害100,如果其它部位应用伤害34,假如我设置丧尸血量为100,命中头部相当于一枪爆头,没有命中头部,三枪也能打死。
在这里插入图片描述
最后在命中的位置播放一个命中音效
在这里插入图片描述
给与物体冲量函数主要实现的是命中物体如果可以模拟物理效果,可以给与它一个冲击的效果。
在这里插入图片描述
最后记得将子弹销毁
在这里插入图片描述

丧尸蓝图的修改

首先修改丧尸蓝图的碰撞体,丧尸蓝图基于charactor蓝图制作,里面包含了两个碰撞体,一个是胶囊体的碰撞体,另一个是在模型上面的碰撞体。
在胶囊体上面,忽略掉相机,物理身体和子弹。忽略这三样很好理解,忽略相机是为了防止丧尸阻挡相机弹簧臂,物理身体是因为丧尸后续要模拟物理效果,忽略子弹是子弹击中胶囊体碰撞体不会触发事件,只有击中躯体才会触发命中事件。
在这里插入图片描述
在丧尸的网格体上面,我们要启用查询和物理,将身体设置为物理躯体,忽略相机,最重要的是要阻挡子弹,这样就可以实现子弹击中丧尸躯体会有事件的相应。
在这里插入图片描述
接下来,我们需要使用一个系统封装好的事件,事件任意伤害,这个事件可以在你受到任意伤害时被调用
在这里插入图片描述
事件首先判断减去受到的伤害后血量是否小于0,
在这里插入图片描述
小于0了以后,就要触发死亡,死亡只会触发一次
在这里插入图片描述
如果没有死亡,将播放受击动画,并降低移动速度,
在这里插入图片描述
定时器调用的函数 从受击状态恢复 关闭受击状态,恢复移动速度,以及,如果离得比较远,丧尸没有发现玩家,还会调用AI控制器的新事件,让控制器调用AI行为树去攻击玩家。
在这里插入图片描述
在AI控制器中,它也会去调用视觉感知回调后面的内容,主要是在丧尸没有发现玩家,被玩家攻击时,能够及时的去实现追逐攻击玩家事件。
在这里插入图片描述
有了状态变量,我们只需要在动画蓝图里面根据变量切换动画即可。这里我图省事,直接在动画蓝图去获取丧尸蓝图的变量的值去修改
在这里插入图片描述

动画蓝图的修改

状态机里面的状态切换也是根据变量直接切换
在这里插入图片描述
由于攻击和受击时,我设置了都可以在移动中进行,所以,状态内部的动画,我们需要进行动画混合,这里使用的是基于骨骼混合,只混合上半身,下半身使用默认移动的动画
在这里插入图片描述

丧尸死亡后处理

如果丧尸的血量小于0,会触发死亡事件,执行死亡的相关处理。
在这里插入图片描述
死亡事件中,先将死亡的变量设置为true,好多事件都需要在状态未死亡才会触发,并修改了移动速度和攻击状态。
在这里插入图片描述
然后开启了丧尸的物理模拟效果,并且关闭胶囊碰撞体,丧尸死亡后不能在阻挡角色。
在这里插入图片描述
关闭的追逐音效,并在一定时间后销毁actor
在这里插入图片描述

丧尸攻击玩家实现

要实现丧尸攻击范围的检测,丧尸默认不会持有武器的,所以,我们需要获取丧尸的胳膊肘和手这两个骨骼的世界坐标系下的位置,然后通过这两个起始坐标,生成一条检测区域来检测攻击时,胳膊是否接触到玩家。碰撞体接触到玩家角色,将给玩家角色蓝图应用一个伤害。

动画通知

首先,我们创建三个动画通知,通过丧尸攻击角色播放攻击动画时,触发查询事件,使用通道检查对玩家进行碰撞检测。三个通知分别是攻击开始,攻击结束,以及设置攻击检测的骨骼。
在这里插入图片描述
在动画里面,添加通知
在这里插入图片描述
第一个动画通知是设置的骨骼名称
在这里插入图片描述
两个骨骼名称分别是胳膊肘到中指
在这里插入图片描述
第二个动画通知是通知丧尸蓝图开始检测,在结束之前,将使用定时器一直循环调用伤害判定
在这里插入图片描述
第三个动画通知是通知丧尸蓝图结束检测,清除定时器,清除攻击中的角色变量。
在这里插入图片描述

丧尸蓝图实现伤害判定

在丧尸蓝图中,增加伤害判定事件,然后在动画通知里面创建的命名获取到场景中的位置,然后根据开始和结束位置生成
在这里插入图片描述
然后设置了一个角色变量,判断是否和上次的相同,保证每次攻击只触发一次伤害,如果是角色的攻击的话,还要更复杂一些,要做成数组,每次做循环判定。
在这里插入图片描述
如果角色是首次受到伤害,那将使用内置节点应用伤害,然后播放一个粒子特效,播放一个血雾特效,让角色产生受伤特效。
在这里插入图片描述

玩家受到攻击的处理

为了可以实现玩家ui上的血条有过渡的效果,需要两个血量的变量,一个是玩家的血量,另一个则是当前需要显示的血量。
在这里插入图片描述
在玩家受到伤害后,首先修改血量
在这里插入图片描述
ui上面的显示将使用一个时间轴去更新当前血量的值,这个值则是显示在ui上面的值
在这里插入图片描述
接下来判断血量如果小于0,则触发死亡
在这里插入图片描述
在处理死亡时,需要将状态修改为死亡状态,所以我们需要在状态枚举里面增加一个死亡枚举
在这里插入图片描述
在死亡事件中,先修改玩家的状态,然后开启角色模型模拟物理
在这里插入图片描述
死亡以后无法移动,禁用移动,并将胶囊体碰撞关闭
在这里插入图片描述
接下来要创造死亡镜头,我们额外创建一个弹簧臂和相机,专门用作死亡用
在这里插入图片描述
弹簧臂关闭碰撞检测,将单独运行
在这里插入图片描述
死亡用相机将设置默认不激活
在这里插入图片描述
死亡时,激活死亡相机
在这里插入图片描述

我们还需要设置死亡时,武器从身上掉落,模拟物理的效果,所以需要在武器蓝图上面实现物理模拟
在这里插入图片描述
在死亡时,判断是否持有相关部位的武器,然后从角色身材分离,模拟物理
在这里插入图片描述
我们还需要一个时间轴,设置播放时间为五秒,过渡为从0到1,用于播放死后后的动画。
首先将死亡相机的弹簧臂从默认的三百向远处拉长,设置到2000过渡。
在这里插入图片描述
拖出死亡相机,然后右键设置后处理设置的配置项,这个主要用于修改死亡后的屏幕后处理特效。
在这里插入图片描述
然后将后期处理设置拖出线,然后点击创建,即可创建一个设置项的配置
在这里插入图片描述

在设置上面,我们可以根据需要,将相关配置的引脚向外
在这里插入图片描述
这里修改的是色彩矫正,还有色彩分离的效果,然后使用时间轴去修改强度
在这里插入图片描述
前两个是需要传入四维变量设置,xyz分别对应rgb三通道,w是整体强度的设置

玩家受击效果

受到攻击时,播放一个2d音效,这个音效本身就玩家自己能听到,不需要播放位置处音效
在这里插入图片描述
然后播放一个相机抖动的效果
在这里插入图片描述
最后再从自己创建的变量数组中,选出一个动画,播放受击动画
在这里插入图片描述
因为受击动画的优先级比较高,需要最后设置
在这里插入图片描述
其实也可以按需要做成可以切换状态,这里就看需求了。

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

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

相关文章

C语言内存操作函数,memcpy的使用和模拟实现,memmove的使用和模拟实现,memcmp的使用,memset的使用。

1.memcpy 函数原型: void *memcpy( void *dest, const void *src, size_t count );void *dest 目标数据首元素地址const void *src 源数据(需要拷贝过去的数据)size_t count 需要拷贝数据的字节大小void *memcpy 拷贝结束后,返回目标数据的起始地址 函…

【简单的图像信息展示应用程序】PYQt5

写在前面的话 这段代码的作用是创建一个简单的图像信息展示应用程序,用户可以点击按钮查看特定文件夹中图像的文件名、大小,并通过查看按钮查看图像。请注意,文件夹路径需要根据实际情况进行修改。 代码讲解 这段代码是使用PyQt5库创建一个…

特征选择:过滤法,嵌入法,包装法

特征选择时首先要去除冗余特征。 它是由其他其他的特征中推演出来的。比如,一个球的体积,那么半径这个特征就是冗余的,因为我们可以由球的体积推算半径。冗余特征在很多时候都是不起作用的 过滤法 过滤方法通常用作预处理步骤,特…

c++11 标准模板(STL)(std::basic_ios)(三)

定义于头文件 <ios> template< class CharT, class Traits std::char_traits<CharT> > class basic_ios : public std::ios_base 类 std::basic_ios 提供设施&#xff0c;以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios…

2013年全国硕士研究生入学统一考试管理类专业学位联考英语(二)试题

2013考研英语&#xff08;二&#xff09;真题 Section I Use of English Directions: Read the following text. Choose the best word(s) for each numbered blank and mark A, B, C or D on ANSWER SHEET 1. (10 points) Given the advantages of electronic money, you mi…

某农业大学数据结构A-第2周作业

1.两个顺序表集合的差集 【问题描述】两个顺序表集合的差集 【样例输入】 25 33 57 60 48 9 13 0 12 50 23 60 4 34 25 13 0 【样例输出】 33 57 48 9 【注意】0代表输入的结束&#xff1b;可以用C风格实现&#xff0c;也可以用C风格实现&#xff0c;两种风格大家均需掌握 #…

Kafka架构

5.kafka系统的架构 5.1主题topic和分区partition topic Kafka中存储数据的逻辑分类&#xff1b;你可以理解为数据库中“表”的概念&#xff1b; 比如&#xff0c;将app端日志、微信小程序端日志、业务库订单表数据分别放入不同的topic partition分区&#xff08;提升kafka吞…

【Proteus仿真】常用器件名称

前言 我常用的仿真器件加上收集的&#xff0c;基于Proteus8.13版本。以下分为两部分&#xff0c;内容都一样&#xff0c;一部分是纯文字&#xff0c;一部分是文字图片&#xff0c;方便快速获取和定位。等积累了更多的器件后会在更新的。搜索时可以用CtrlF快速查找。 命名的规则…

管理类联考——英语二——技巧篇——写作——B节——议论文——必备替换句型

议论文必备替换句型 (一&#xff09;表示很明显/众所周知的句型 It is obvious thatIt is clear thatIt is apparent thatIt is evident thatlt is self-evident thatIt is manifest thatIt is well-knownIt is known to all thatIt is widely-accepted thatIt is crystal-cl…

三层交换机互联互通配置 华为交换机

#三层交换机互联互通 交换机配置 命令 #进入系统视图 <Huawei>system-view #关闭系统提示信息 [Huawei]undo info-center enable #创建三个Vlan10 [Huawei]vlan 10 [Huawei-vlan10]quit [Huawei]vlan 20 [Huawei-vlan20]quit [Huawei]vlan 30 [Huawei-vlan30]quit #接…

2023六月第二周(juc知识点记录)

1、多线程资源竞争 先创建资源类&#xff0c;并给线程加锁&#xff0c;推荐使用reatrantlock&#xff0c;然后写业务&#xff0c; 加锁了说明肯定要有执行条件&#xff0c;例如抢到锁还要判断库存必须大于0&#xff0c; 否则线程等待await,然后执行业务&#xff0c;最后创建多个…

一分钟图情论文:《运用服务场景模型理解挪威学术图书馆中的学生体验》

一分钟图情论文&#xff1a;《Applying the servicescape model to understand student experiences of a Norwegian academic library》 1981年&#xff0c;Booms, B. H.和Bitner, M. J.1在一篇市场营销学科的论文中引入了Servicescape模型&#xff0c;用于描述和分析服务场所…

无线供电原理、种类及应用方案介绍

目录 一、无线供电种类 二、无线供电的原理 磁共振技术的电路组成 微波能量传输 三、无线供电的优势 四、市场应用 五、市场趋势 参考文献 一、无线供电种类 包含电磁场耦合能量传输&#xff08;电磁磁感应&#xff08;近场供电&#xff09;、磁共振&#xff08;远场供…

easyX库颜色模型和颜色及样式设置相关函数(注释版)

0.颜色模型和颜色及样式设置相关函数概览 本次我给你带了easyX库系列的颜色模型和样式设置的相关函数&#xff0c;希望您能看得开心。 函数或数据类型描述LINESTYLE画线样式对象。FILLSTYLE填充样式对象。setbkcolor设置当前设备绘图背景色。setlinecolor设置当前设备画线颜色…

[易语言][原创]使用易语言部署yolov8的onnx模型

易语言部署yolo系列模型&#xff0c;现在网上有很多但是他们不够简洁也不够专业&#xff0c;有人专门把opencv封装成易语言支持库然后用opencv在易语言端写&#xff0c;其实这种效率没有在C直接推理效率高&#xff0c;因为易语言往C传递图像数据集是需要转换图像数据集格式才能…

十一、docker学习-docker核心之docker网络(1)

docker网络 当开始大规模使用docker时&#xff0c;你会发现需要了解很多关于网络的知识。docker作为目前最火的轻量级容器技术&#xff0c;有很多令人称道的功能&#xff0c;如docker的镜像管理。然而&#xff0c;docker同样有着很多不完善的地方&#xff0c;网络方面就是Dock…

Nexus搭建Maven私有库介绍

为什么需要Maven私有库&#xff1f; 使用Maven获取Java依赖包的时候&#xff0c; 默认是从Maven的中央库下载 jar文件&#xff0c; 中央库的地址是&#xff1a; https://repo.maven.apache.org/maven2 。 如果下载速度慢&#xff0c; 可以使用阿里的镜像&#xff0c; 地址如下…

[元带你学: eMMC协议详解 16] eMMC 安全方案 之 设备锁定(Lock) / 解锁(Unlock) 详解

依JEDEC eMMC 5.1及经验辛苦整理&#xff0c;付费内容&#xff0c;禁止转载。 所在专栏 《元带你学: eMMC协议详解》 内容摘要 全文 4100 字&#xff0c; 内容摘要 1. 锁定与解锁的概念&#xff1f; 2. 设置密码的方法和注意点&#xff1f; 3. 重置密码的方法和注意点&…

(Linux) WSL 适用于Linux的Windows子系统

文章目录 前言环境设置开发者选项启用或关闭Windows功能进入Microsoft应用商场下载下载完成开启PS: 查看运行效果 Linux基础配置环境缺失注册账号设置root账户密码常用环境的安装 VS Code 连接插件连接的快捷方式 END 前言 学习Linux的阻碍&#xff0c;往往第一步就是没有Linu…

Java实现图片的上传和显示

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 文章目录 &#x1f388;前言&#x1f384;前端&#xff1a;&#x1…