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

2024-06-18 07:04

本文主要是介绍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 ( 之人物三段攻击 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071615

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网