Unity2D游戏制作入门 | 14( 之人物实装攻击判定 )

上期链接:Unity2D游戏制作入门 | 13 ( 之人物三段攻击 )-CSDN博客

上期我们聊到给人物添加三段攻击的动画,通过建立新的图层动画当我们按下攻击按键就会自动切换进攻击的动画,如果我们连续按下攻击键,我们还可以进行好几段的攻击。因为攻击的检测是当我们按下按键时才触发的,所以使用了注册事件的方式进行启动攻击动画,然后在攻击动画退出后我们还使用代码修改人物攻击状态为flase以此来让人物不要继续播放攻击动画。这期我们来让人物有真正的攻击伤害,即人物实装攻击的判定。
这期代码不是很多,请在关键代码处添加即可。如果不知道在哪份代码文件下添加请查看往期。

正文:

​ 我们将使用触发器的方式来执行攻击。我们选中物体:人物,然后在Animation中查看人物的攻击动画,我们观察人物攻击的关键帧,即人物出刀的那一帧有白色的刀影,我们需要在它身加上触发器,即关键帧的触发,然后先要规定这个触发器的范围(你也可以理解为形状,因为当其他碰撞体进去该触发器范围就会启动触发器)

在这里插入图片描述

然后接下步骤有点多,根据下图:因为人物不能那么多的碰撞体,所以我们在人物下创建新的子物体,然后统统改名方便我们管理。然后添加Polygon多边形碰撞体,记得把isTrrigger选项勾选起来,然后在人物关键帧出让多边形吻合我们的刀影,最后在人物攻击动画下的AddProperty添加Attack1的isActive。这个isActive是控制物体的开启和关闭,举例如果把人物这个物体名称旁的正方形选项点击为不勾选的状态,那么人物就会在场景中消失,就是这个意思,所以我们需要通过这个开关来控制攻击触发器的开启和关闭,所以在关键帧打开这个触发器即可,需要注意的是,如果你要运行游戏试玩的话一定要先关闭攻击的碰撞体。
在这里插入图片描述

因为人物的第一段攻击是在第四帧才有刀影,所以我们把其他帧的isActive关闭即可。然后再播放人物的第一段攻击动画(记得把编辑多边形的功能关闭了,让那个绿色的边框给取消),然后发现人物在攻击的关键帧才会出现白色的边框(那是触发器的形状)。
在这里插入图片描述

然后让每个攻击的状态挂载上Polygon碰撞器,然后绘制好边再在关键帧启动它,这需要重复工作,然后每次攻击状态都要挂载上Attack的代码让每段攻击拥有伤害值,第一和第二段为10,第三段为暴击输入20。
在这里插入图片描述

然后根据代码:我们发现Attack的代码是获取物体身上的Character代码去执行TakeDamage的函数方法,但是我们人物也是有初始的碰撞体(胶囊碰撞体)所以如果我们攻击,会伤害到我们人物自己。

private void OnTriggerStay2D(Collider2D other){other.GetComponent<Character>()?.TakeDamage(this);//加问号处为语法唐,意思是对面身上有对应函数我才执行。}

所以我们需要让我们攻击状态下的触发器和敌人发生关系就好了,三段攻击都需要修改一下。

在这里插入图片描述

如果发现人物攻击野猪时,野猪没有受到伤害,那么我们去把野猪身上的胶囊碰撞体的碰撞优先级打开(因为野猪身上有两个碰撞体所以可能会判断失误),测试的时候记得给野猪规定无敌时间1秒或多少都可以。
在这里插入图片描述

测试的过程中发现人物还能边走边攻击,这个不是我们想要的,所以我们需要限制一下人物。我们在人物控制代码中添加条件!isHurt&&!isAttack,也就是只有在没有受伤和人物攻击时我们可以进行位移。然后需要注意的是:之前我们在攻击动画退出后添加代码已更改人物的攻击状态isAttack为flase,这里我们不需要修改啥了。

private void FixedUpdate()//固定频率运行,即0.02秒执行一次。跟物理有关的放在这执行{if (!isHurt&&!isAttack){if (isShift && physicsCheck.isGround)Walk();elseMove();}

但是又有一个问题了,我们跑步后突然攻击还是会有一段的位移,这是因为人物的材质是光滑的所以我们需要规定人物在地上时材质是有摩檫力的,靠近墙体就就是光滑的。所以我们需要修改人物的材质为有摩檫力的即可,然后如果你不希望人物攻击时还有位移,你就可以在攻击动画链接的代码下添加代码:这样人物一攻击就会停下来了。

override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){animator.GetComponent<Player_control>().isAttack = true;}

然后解决材质问题:所以我们先在人物控制代码中添加材质:我们要用到三元运算符physicsCheck.isGround?normal:wall,如果为true就执行冒号前的。

	private CapsuleCollider2D coll;[Header("材质")]public PhysicsMaterial2D wall;//碰墙材质摩檫力为0public PhysicsMaterial2D normal;//在地上时材质摩檫力是0.8
//在Awack中获得权限
coll = GetComponent<CapsuleCollider2D>();//在Update中检测调用CheckState();//材质替换函数private void CheckState(){coll.sharedMaterial=physicsCheck.isGround?normal:wall;}

总结:

这节我们学习了人物在攻击动画中添加关键帧来用触发器的方式进行人物的攻击是否启动的问题,我还让人物只对敌人造成伤害(排除人物自己不然就会受到攻击)。然后我们还规定了人物攻击时是不能移动的(因为我们没有边跑边攻击的动画绘制),然后还修复了短暂性的人物攻击状态为true却一直不是true的状态(就人物如果一直在播放攻击的动画那么它应该一直是true,这样不会立马播放动画后我们又可以继续移动了)。最后我们还解决了材质的问题,当我们的人物在地上时我们的人物材质是有摩檫力的,一旦离开地面我们的人物就是光滑的材质。但是还是有一个问题没有解决,**如果贴墙跳会跳不高因为当时人物的才是是normal,所以需要解决这个问题。**其次爬墙、滑铲这里的UP只限在付费课堂获取,所以需要靠自己去解决。

补充:

1、如果使用Polygon多边行,在变出弄出了更多的锚点,如果想取消只能按下Ctrl键加左键再点击边就能实现取消了。

未尽事宜以后可能会补充。

---------------------结束线

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

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

相关文章

S32K3通过S32DS实现:S32K3如何将FLASH驱动放到RAM里面、RAM如何实现软件复位数据不丢失操作。

目录 1、概述 2、默认flash存放位置展示 3、通过默认的链接文件将flash放置到RAM 4、通过修改启动与链接文件将flash放在RAM 5、RAM热复位数据不丢失 1、概述 在通过RTD的SDK也好MCAL也好,始终存在一个问题,生成的代码除了看门狗模块,默认都是放在flash里面,按照正常逻…

自动统计一个学科领域中总共有多少研究者

问题&#xff1a;怎么知道一个学科领域中总共有多少研究者&#xff1f; 方法&#xff1a;学者的谷歌学术主页中会有对应的领域&#xff0c;以进化计算为例&#xff0c;进入一位进化计算学者的谷歌主页&#xff0c;然后进入标签“Evolutionary Computation”&#xff0c;只要知…

lombok不起作用排查

1.idea中lombok插件已安装并启用 2.idea中annotation processors已勾选 3.项目中gradle或maven已引入lombok依赖 但提示还是找不到get,set方法。 还需要启用annotationProcessor 重点是annotationProcessor的配置&#xff0c;没有配置这个才是问题出现的关键&#xff01;&…

CSS-0_1 CSS和层叠(样式优先级、内联样式、选择器 用户代理样式)

CSS 的本质就是声明规则 ——《深入解析CSS》 文章目录 CSS层叠和优先级用户代理样式请和用户代理样式和谐相处 选择器单选择器的优先级选择器组的优先级关于选择器的其他源码顺序尽可能的选择优先级低的选择器 内联样式内联样式和JavaScript !important多个 !important 碎碎念…

【计算机毕业设计】230疫苗预约weixin小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【Linux】Jenkins Pipeline流水线详解及基于Jenkins流水线实现自动更新项目(实战)

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

用这个神级提示词插件,能让你的AI绘画工具Stable diffusion提示词直接写中文!

大家好&#xff0c;我是设计师阿威 最近&#xff0c;有同学在使用AI绘画工具 Stable Diffusion的时候和我说&#xff1a;老师&#xff0c;我英文不好&#xff0c;能不能直接让我写中文提示词啊&#xff1f;最好可以直接在SD的输入框就能直接写中文&#xff0c;不用切换网页或者…

Git--Part4--多人协作

theme: nico 在之前的Git博客中&#xff0c;已经把Git本地相关的操作以及远程操作的介绍完了。如下&#xff1a; Git–Part1–基础操作 - 掘金 (juejin.cn)Git–Part2–分支管理 - 掘金 (juejin.cn)Git–Part3–远程操作 & 配置 & 标签管理 - 掘金 (juejin.cn) 这篇文…

vue大作业-端午节主题网站

vue大作业-端午节主题网站介绍 端午节&#xff0c;又称为龙舟节&#xff0c;是中国的传统节日之一&#xff0c;每年农历五月初五庆祝。这个节日不仅是纪念古代爱国诗人屈原的日子&#xff0c;也是家人团聚、共享美食的时刻。今天&#xff0c;我们非常高兴地分享一个以端午节为…

本地运行大语言模型(LLMs)

用例 像PrivateGPT、llama.cpp、Ollama、GPT4All、llamafile 等项目的流行度凸显了本地&#xff08;在您自己的设备上&#xff09;运行大型语言模型&#xff08;LLMs&#xff09;的需求。 这至少有两个重要的好处&#xff1a; 1.隐私&#xff1a;您的数据不会发送给第三方&a…

模拟 IQ 方法的知识

模拟 IQ 调制器&#xff08;用于发射器&#xff09;和 IQ 解调器&#xff08;用于接收器&#xff09;已经使用了数十年&#xff08;[1] 至 [3]&#xff09;。 近推出了新的A/D和D/A转换器&#xff0c;可以直接对1至4 GHz的IF进行采样&#xff1b;在第二、第三和第四奈奎斯特区…

1. zookeeper分布式协调者

zookeeper分布协调者 一、zookeeper介绍1、软件设计架构1.1 单体架构1.2 SOA架构/分布式1.3 微服务架构 二、zookeeper角色1、角色2、选举机制3、znode类型 三、zookeeper集群部署1、环境规划2、安装jdk3、安装配置zookeeper3.1 安装zookeeper3.2 编辑配置文件3.3 创建myid文件…

Navicat for MySQL 11软件下载及安装教程

软件简介&#xff1a; Navicat for SQL Server 是一套专为 SQL Server设计的全面的图形化数据库管理及开发工具&#xff0c;可进行创建、编辑和删除全部数据库对象&#xff0c;例如表、视图、函数、索引和触发器&#xff0c;或运行 SQL查询和脚本&#xff0c;查看或编辑 BLOBs…

彩色图像批处理实例

在数字图像处理过程中&#xff0c;经常需要对一批图像进行处理&#xff0c;下面以自然场景下花背景分割为例&#xff0c;给出其主要处理过程和处理结果。 处理的主要步骤&#xff1a;1. 六张彩色图像存放在flower文件夹中&#xff0c;图像文件名为1.jpg 2.jpg 3.jpg 4.jpg 5.j…

物联网技术-第4章物联网通信技术-4.1计算机网络

目录 1.1计算机网络拓扑与组成 &#xff08;1&#xff09;全连通式网络 &#xff08;2&#xff09;星型网 &#xff08;3&#xff09;环形网 &#xff08;4&#xff09;总线网 &#xff08;5&#xff09;不规则型网 1.2数据交换类型 &#xff08;1&#xff09;电路交换网 &…

supOS数据集成

为解决企业数据孤岛问题&#xff0c;supOS对外提供了天湖能力&#xff0c;APP应用集成到supOS后可以使用supOS的天湖&#xff0c;所有数据归集到天湖&#xff0c;利用supOS的ESB消息总线能力实现各个业务系统的服务注册&#xff0c;对外提供统一消息总线能力&#xff0c;从而解…

GD32调试篇:STLINK驱动下载安装

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布&#xff1a; https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

LabVIEW在SpaceX的应用

结合真实的资料介绍LabVIEW在SpaceX的应用&#xff0c;涵盖自动化测试系统、数据采集与监控、可视化与分析、模块化设计与扩展&#xff0c;以及效率与可靠性的提高。 ​ 自动化测试系统 LabVIEW在SpaceX的自动化测试系统中发挥了关键作用。自动化测试是确保SpaceX火箭及其子系…

Flutter项目,Xcode15, 编译正常,但archive报错

错误提示 PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/目录/Developer/Xcode/DerivedData/Runner-brgnkruocugbipaswyuwsjsnqkzm/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner…

目标检测数据集 - 手机屏幕表面表面缺陷检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;手机屏幕表面缺陷检测数据集&#xff0c;真实采集高质量手机屏幕表面含缺陷图片数据&#xff0c;数据集含多款不同型号和品牌的手机屏幕表面图片数据&#xff0c;包括苹果手机屏、三星手机屏、华为手机屏等数据。数据标注标签包括 Bubble 气泡/水滴、Scr…