当前位置: 首页 > news >正文

Unity2D游戏制作入门 | 13 ( 之人物三段攻击 )

上期链接:Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)-CSDN博客

上期我们聊了人物的受伤和死亡的逻辑和动画,我们主要学习了事件的执行,即我们在人物受伤时可能会触发很多的事件,比如触发人物受伤的动画以及播放音乐等(可以是人物受伤时发出的声音),然后我们要使用了覆盖和叠层的概念,关键是多重事件的注册。这期我们来看看人物的三段攻击动画的执行。下方代码:

//Player_control.cs
//只是更新加入的代码,具体更多代码请看前边的内容private PlayerAnimations playeranimation;public bool isAttack;
...private void Awake(){inputControl.GamePlayer.Attack.started += PlayerAttack;//按J键进行人物的攻击}
...private void PlayerAttack(InputAction.CallbackContext obj){playeranimation.PlayerAttack();isAttack = true;}
//PlayerAnimations.cspublic void SetAnimatons()//需要做很多动画的切换,我们用这个函数来执行所有的动画切换。{...anim.SetBool("isAttack",playercon.isAttack);}public void PlayerAttack(){anim.SetTrigger("attack");

正文:

​ 为了实现我们的人物攻击,我们需要先看看人物动作的guid。有两端攻击,前六张为第一段攻击,第二段有两张,其实在人物第二张素材中还要一个第三段的攻击那是暴击。
在这里插入图片描述

​ 我们在管理人物动画的文件下创建三段攻击的动画buleAttack1、2、3,根据之前的操作,快速添加动画的素材。
在这里插入图片描述

​ 我们先在Animator中删除我们刚刚创建的三段动画,然后我又需要创建的图层动画。我们记得把我们的权重也设置为1。

在这里插入图片描述

​ 我们创建一个新的空的state,然后把刚刚创建好的三段攻击的动画添加进去,那么我们想进行三段的攻击,我们就必须要一个进入攻击状态的标志,所有我们需要创建一个bool值,取名为isAttack。
在这里插入图片描述

​ 然后我们还需要添加一个触发的判断,就是说我们每次点按后都触发下一次的攻击状态,所以还需要创建新的判断为isTrrigger。然后攻击1到2,2到3的右侧条件都是一样的,按键要按下才能触发。

在这里插入图片描述

​ 然后如果在攻击1的动画播放90%后还没按下我们就会退出攻击的状态,即我们会刷新我们的攻击,那么我们下一次攻击时就会重新开始,下面的三条箭头表示,我们在该状态下如果不按下攻击切换到下一的攻击状态我们就需要退出我们的攻击动画了。这就相当于我们攻击时要连续按键,不然在某阶段的攻击状态下我们就需要退出攻击状态,其实这也很符合我们的直觉。
在这里插入图片描述

​ 然后我们需要去到我们按键的地方去添加新的攻击的按键,我们添加新的按键J键即可。
在这里插入图片描述

​ 我们现在就可以通过代码对按键进行一个链接了。打开人物控制的代码(组件),然后我们在Jump按键绑定事件下添加新的函数人物攻击

inputControl.GamePlayer.Attack.started += PlayerAttack;//这条是在Awake函数中初始化的
.....
private void PlayerAttack(InputAction.CallbackContext obj){}

​ 我们还需要再人物动画创建新的动画切换功能的函数:

public void PlayerAttack(){anim.SetTrigger("attack");}

​ 然后我们在人物控制的代码中,我们获取人物动画的组件权限,当我们按下攻击的按键时,我们就执行触发上面的代码,即让attack触发启动。==因为我们刚刚还添加别的触发的条件,所以还需要在人物控制代码的上头创建新的变量为bool类型isAttack。==所以代码最后变成了:

private void PlayerAttack(InputAction.CallbackContext obj){playeranimation.PlayerAttack();isAttack = true;}

​ 接下来我们进行攻击测试,如果你的人物攻击第一下比较有延迟,记得在人物攻击的图层触发的动画的State进入Attack1时直接改为不用等待直接播放即可,就是说没有等待只要满足条件我们直接进入。然后我们需要每次在退出攻击状态后,不管你是在那个阶段退出的攻击动画,我们都需要改变人物isAttack的状态,就是我们需要更新人物的攻击状态。所以我们只需在攻击的状态下创建代码,在该动画播放完成后我们就进行一个状态的更新即可。

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

在这里插入图片描述

总结:

​ 我们这期聊了如何实现人物的三段攻击。这期的话就是一个动画的创建,然后设定进入和退出的条件设置,然后创建参数,再在代码中链接起来即可,因为按键绑定了攻击,所以按下攻击按键我们使用注册事件的方式进行触发器的启动和改变人物的攻击状态为true,再在人物攻击动漫播放完毕后我们再次人物的攻击状态。

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

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

相关文章:

Unity2D游戏制作入门 | 13 ( 之人物三段攻击 )

上期链接&#xff1a;Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)-CSDN博客 上期我们聊了人物的受伤和死亡的逻辑和动画&#xff0c;我们主要学习了事件的执行&#xff0c;即我们在人物受伤时可能会触发很多的事件&#xff0c;比如触发人物受伤的动画以及播放音乐等…...

DAY04 HTMLCSS

文章目录 一 表单(1) 数字控件(2) 颜色控件(3) 日期控件(4) 月份控件(5) 星期控件(6) 搜索控件(7) 范围控件 二 浮动框架三 结构化标签四 CSS1 CSS概述2 CSS的编写位置1. inline style 行内样式2. inner style 内部样式3. outer style 外部样式4. 小结 3 CSS选择器1. 通用选择器…...

Linux_理解程序地址空间和页表

目录 1、进程地址空间示意图 2、验证进程地址空间的结构 3、验证进程地址空间是虚拟地址 4、页表-虚拟地址与物理地址 5、什么是进程地址空间 6、进程地址空间和页表的存在意义 6.1 原因一&#xff08;效率性&#xff09; 6.2 原因二&#xff08;安全性&#xff09; …...

NAND闪存市场彻底复苏

在全球内存市场逐渐走出阴霾、迎来复苏曙光之际&#xff0c;日本存储巨头铠侠&#xff08;Kioxia&#xff09;凭借敏锐的市场洞察力和及时的战略调整&#xff0c;成功实现了从生产紧缩到全面复苏的华丽转身。这一转变不仅彰显了企业在逆境中的生存智慧&#xff0c;也为全球半导…...

过拟合与正则化

Location Beijing 过拟合 对于一个模型 A A A&#xff0c;解向量空间为 θ \theta θ&#xff0c;误差函数用式1表示 J ( θ ) J a c c [ y θ ( x ) − y ] 2 (1) J(\theta)J_{acc}[y_\theta(x)-y]^2\tag{1} J(θ)Jacc​[yθ​(x)−y]2(1) 首先我们考虑用模型 A A A拟合下…...

VMware挂载NAS存储异常处理

问题概述 由于非法关机或恢复&#xff0c;NFS存储可能会出现以下问题&#xff1a; 数据存储处于挂起状态或无法正常识别。虚拟机的配置文件或虚拟磁盘仍然注册在异常数据存储上。系统误认为有虚拟机在使用该数据存储。 问题对策 下面是详细的排查步骤和解决对策&#xff1a…...

Redis 7.x 系列【4】命令手册

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 说明2. 命令手册2.1 Generic2.2 数据类型2.2.1 String2.2.2 Hash2.2.3 List2.2.4 S…...

走进Elasticsearch

什么是ES 是一个分布式、RESTful风格的搜索和数据分析引擎 中文参考文档&#xff1a; 《Elasticsearch中文文档》 | Elasticsearch 技术论坛 elasticSearch官网&#xff1a; Functions and Operators | Elasticsearch Guide [7.11] | Elastic查询方式 Kibana查询&#xff08;原…...

QT TCP服务器和客户端示例程序

下面是一个简单的 Qt TCP 服务器和客户端示例&#xff0c;演示了如何使用 vSetDriver、vSetListener 和 vTcpServerStart 函数。假设 vSetDriver 和 vSetListener 是你定义的自定义函数。 TCP 服务器部分 tcpserver.h #ifndef TCPSERVER_H #define TCPSERVER_H#include <QT…...

Xlua三方库Android编译出错解决办法

Xlua三方库Android编译出错解决办法 最近听老师的热更教程&#xff0c;讲到xlua编译android平台会报错&#xff0c;也是看了老师的博客&#xff0c;按照方法去解决&#xff0c;然而问题并没有解决。应该是因为代码更新或者版本不一样&#xff0c;在此简单记录一下解决过程。 参…...

美国犹他州立大学《Nature Geoscience》(IF=18)!揭示草本植物对土壤有机碳的重要贡献!

随着全球变暖的影响越来越显著&#xff0c;碳固定成为了一个备受关注的话题。在这个背景下&#xff0c;热带草原被认为是一个潜在的碳固定区域。然而&#xff0c;目前的研究主要关注于在热带草原中种植树木&#xff0c;以期望增加土壤有机碳含量。但是&#xff0c;热带草原中的…...

高考专业抉择计算机专业热度不减,兴趣、实力与挑战并存。

作为一名即将步入大学校门的高考生&#xff0c;我对于计算机相关专业是否仍是热门选择感到困惑。在过去几年里&#xff0c;计算机科学与技术、人工智能、网络安全、软件工程等专业一直备受追捧&#xff0c;吸引了无数学生。然而&#xff0c;随着市场竞争加剧和市场饱和度提高&a…...

Flask-RQ

Flask-RQ库教程 Flask-RQ 是一个用于在 Flask 应用中集成 RQ&#xff08;Redis Queue&#xff09;的扩展。RQ 是一个简单的 Python 库&#xff0c;用于将任务排入 Redis 队列并异步执行这些任务。这对于处理长时间运行的任务&#xff08;如发送电子邮件、生成报告等&#xff0…...

LeetCode 58. 最后一个单词的长度

LeetCode 58. 最后一个单词的长度 你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串 示例 1&#xff1a; 输入&#xff1a;s “Hello World”…...

3阶段提交协议(3pc)

3阶段提交协议&#xff08;3pc&#xff09; 1 简介 三阶段提交协议是一个强一致、中心化的原子提交协议。解决了分布式事务、副本容错等分布式问题。其核心思想是将2PC的二阶段提交协议的“准备阶段”一分为二&#xff0c;形成了由CanCommit、PreCommit、DoCommit三个阶段组成…...

802.11中的各种帧

在无线网络中&#xff0c;802.11协议定义了三种类型的帧&#xff1a;管理帧&#xff08;Management Frames&#xff09;、控制帧&#xff08;Control Frames&#xff09;和数据帧&#xff08;Data Frames&#xff09;。每种类型的帧都有其特定的功能&#xff0c;帮助维护和管理…...

SAP PP学习笔记21 - 计划策略的Customize:策略组 > 策略 > 需求类型 > 需求类(消费区分,计划区分)

上面几章讲了MTS&#xff0c;MTO&#xff0c;ATO的计划策略。 本章来讲一下它的后台 Customize。 1&#xff0c;Customizeing&#xff1a;Planned Indep.Reqmts Management 这是配置计划策略的整个过程&#xff1a; - Requirements Type / Class 需求类型 / 需求类 - Plann…...

axure9设置组件自适应浏览器大小

问题&#xff1a;预览时不展示下方的滚动条 方法一&#xff1a;转化为动态面板 1.在页面上创建一个矩形 2.右键-转化为动态面板 3.双击进入动态面板设置 4.设置动态面板矩形的颜色 5.删除原来的矩形 6.关闭动态面板&#xff0c;点击预览 7.此时可以发现底部没有滚动条了 方法…...

示例:WPF中TreeView自定义TreeNode泛型绑定对象来实现级联勾选

一、目的&#xff1a;在绑定TreeView的功能中经常会遇到需要在树节点前增加勾选CheckBox框&#xff0c;勾选本节点的同时也要同步显示父节点和子节点状态 二、实现 三、环境 VS2022 四、示例 定义如下节点类 public partial class TreeNodeBase<T> : SelectBindable<…...

C++ explicit关键字的用法

在C中&#xff0c;explicit关键字用于构造函数和转换运算符&#xff0c;以防止隐式转换。它可以帮助我们避免意外的类型转换&#xff0c;从而提高代码的安全性和可读性。explicit关键字只能用于单参数构造函数和转换运算符。 使用explicit的场景 单参数构造函数&#xff1a; 当…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...