(M)UNITY三段攻击制作

news/2024/4/15 15:11:04

三段攻击逻辑

基本逻辑:

人物点击攻击按钮进入攻击状态(bool isAttack)

在攻击状态下,
一旦设置的触发器(trigger attack)被触发,设置的计数器(int combo)查看目前攻击次数,如果>0,播放一段攻击;>1,二段攻击;>2,三段攻击。

对动画exit time的设置:

如果 AnimatorStateTransition.hasExitTime 为 true,则 exitTime 表示过渡可以生效的准确时间。\ 这是以标准化时间表示的,因此,举例来说,退出时间 0.75 意味着在第一帧上如果已播放了 75% 的动画,Exit Time 条件就会为 true。

也就是说,exit time设置为90%后,一旦在某段攻击动画播放超过90%后,就满足进入exit time的条件,此时再次点击攻击按钮是无法combo的。

也就是也就是说,只有在某段攻击动画播放0-90%的阶段点击攻击按钮才能触发combo。

同时需要设置如果exut time到了1,进入到exit状态,退出attack层的动画。

ps 但是由于三段攻击的时间都很短,特别是第二段攻击,很难达到combo的条件,所以最后去掉了对combo计数的判断
整体攻击逻辑变成进入攻击状态,0.9个动作内点击攻击,触发器被触发,进入下一个攻击状态

状态转换条件

//最终删除combo相关部分
1.进入攻击(1段)

在这里插入图片描述

2.combo条件的达成

在这里插入图片描述

3.没有及时按下攻击键导致退出攻击动画

在这里插入图片描述

按键绑定及代码

1.按键绑定

在这里插入图片描述
2.playerController代码

public bool isAttack;private void Awake(){//attack事件注册inputControl.Gameplay.Attack.started += PlayerAttack;    }private void PlayerAttack(InputAction.CallbackContext context)
{//按键点击后进入攻击状态isAttack = true;//触发器的触发playerAnimation.PlayerAttack();   
}

3.animation数据的链接

 void Update(){SetAnimation();}public void SetAnimation(){anim.SetBool("isAttack", playerController.isAttack);         }public void PlayerAttack(){anim.SetTrigger("attack");}

http://www.ppmy.cn/news/1338282.html

相关文章

springboot整合mqtt实现消息订阅和推送

前言 mica-mqtt-client-spring-boot-starter是一个基于Spring Boot的MQTT客户端启动器,它集成了mica-mqtt客户端,提供了在Spring Boot应用程序中使用MQTT协议进行消息通信的能力。以下是关于mica-mqtt-client-spring-boot-starter的简介: 特…

评估SD-WAN的三个功能

在评估SD-WAN时,最重要的是用业务需求权衡各种功能和优势,以达到降低复杂度、提高速度和性能的目的。这些功能主要是集中管理(中央管理)、全局安排和远程部署。 集中管理: 为了管理复杂的现代网络,用户需要将面板中的单一窗格视图连接到分支…

Ubuntu 下进行系统备份与迁移

经常一个项目做到一半,结果系统崩溃了,每次都得重装系统,因此,就在想怎么才能够直接在ubuntu系统备份现有的系统呢?找了很多教程,发现都需要安装软件,这些方法都比较复杂,后来终于找到一种简单…

【日常总结】如何快速迁移Navicat中的全部连接设置到新安装的Navicat中?

一、场景 二、需求 三、解决方案 Stage 1:“文件”-->“导出连接”。 Stage 2:获取备份文件 connections.ncx Stage 3:导入connections.ncx 四、不足 一、场景 公司电脑换新,所有软件需要重装,包括navicat 1…

华为---STP(二)---STP报文和STP端口状态

目录 1. STP报文简介 1.1 Configuration BPDU 1.2 TCN BPDU 2. STP交换机端口状态 2.1 STP交换机端口状态表 2.2 STP交换机端口状态迁移过程图 2.3 STP交换机端口状态变化举例说明 3 引起的STP网络拓扑改变的示例 3.1 根桥出现故障 3.2 有阻塞端口的交换机根端口所在…

第三讲_JavaScript的集合容器

JavaScript的集合容器 1. Array1.1 创建数组的两种方式1.2 数组常用的属性1.3 数组常用的方法1.4 数组遍历的四种方式 2. Set2.1 创建Set集合2.2 Set常用的属性2.3 Set常用的方式2.4 Set遍历的两种方式 3. Map3.1 创建Map对象3.2 Map常用的属性3.3 Map常用的方式3.4 Map遍历的三…

E4 基于Mysql的游标定义和应用

一、实验目的: 熟练使用MySQL游标的定义和应用。 二、实验要求: 1、基本硬件配置:英特尔Pentium III 以上,大于4G内存; 2、软件要求:Mysql; 3、时间:1小时; 4、撰写实验报告并按时提交。 三、实验内容: 问题1:请写一个存储…

网络协议与攻击模拟_11DHCP欺骗防护

开启DHCP 监听 ip dhcp snooping 指定监听vlan ip dhcp snooping vlan 1 由于开启监听后,交换机上的接口就全部变成非信任端口, 非信任端口会拒绝DHCP报文,会造成正常的DHCP请求和响应都无法完成。 现在是请求不到IP地址的,…

spark-cannot resolve overloaded method

使用split方法,出现错误:cannot resolve overloaded method 解决方法:那个regex应该是自动生成,所以split括号中输入空引号即可。 入门学习人的愚笨,也要继续坚持,加油!

【每日一题】2670. 找出不同元素数目差数组-2024.1.31

题目: 2670. 找出不同元素数目差数组 给你一个下标从 0 开始的数组 nums ,数组长度为 n 。 nums 的 不同元素数目差 数组可以用一个长度为 n 的数组 diff 表示,其中 diff[i] 等于前缀 nums[0, ..., i] 中不同元素的数目 减去 后缀 nums[i …

burp靶场--xss下篇【16-30】

burp靶场–xss下篇【16-30】 https://portswigger.net/web-security/all-labs#cross-site-scripting 实验16:允许使用一些 SVG 标记的反射型 XSS ### 实验要求: 该实验室有一个简单的反射型 XSS漏洞。该网站阻止了常见标签,但错过了一些 S…

实习记录——第八天

今天还是去了安全值守的公司,经历了昨天的教训,今天来的挺早的,但是我发现这边企业打车来的时候需要十分钟,到地方只需要五分钟,也不知道怎么回事,早上啥都不想干,昨天下午下班后去了商场吃了9.…

如何将jar打包到本地maven仓库

博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java、Linux、K8S 期待大家的关注💖点赞👍收藏⭐留言💬 用mvn install 命令可以实现。具体命令为 mvn install:install-file \ -Df…

页面通过Vue进行整体页面不同语言切换 i18n库

目录 引入 如何做到 下载i18n库 构建整体翻译文件结构 语言包文件 i18n配置文件 把i18n挂载到vue实例上 添加按钮点击事件切换语言 引入 我们现在有这样一个要求,我们想要对我们开发的网页进行国际化操作,也就是我们不仅要有中文,还要有英文等。用户可以随时进行不同语言…

axios结合ts使用,取消请求,全局统一获取数据,抛出错误信息

通常在开发时,后端向前端返回的数据可以如下: 1 使用restful api充分利用http状态码,然后在data中追加code字段,请求成功返回200,请求失败返回404,401,500等状态码,并且在code字段中给出详细的字符串信息2 再包一层&a…

浅谈Java主流锁

浅谈Java主流锁 synchronized关键字 synchronized是Java中最基本的锁机制,可以用来修饰方法或代码块。 修饰方法: public synchronized void method() {// 代码 }修饰代码块: public void method() {synchronized (this) {// 代码} }synch…

解决:NameError: name ‘x’ is not defined

解决:NameError: name ‘x’ is not defined 文章目录 解决:NameError: name x is not defined背景报错问题报错翻译报错位置代码报错原因解决方法总结今天的分享就到此结束了 背景 在使用之前的代码时,报错: Traceback (most rec…

public class和class的区别

不用public修饰的类 一个Java源文件中可以定义多个不用public修饰的class,且类名不用和java源文件名一致。public修饰的类可以没有。编译之后,一个class就会对应生成一个class字节码文件 对于用public修饰的类 如果一个类用了public修饰,那…

k8s学习-Rolling Update滚动更新

为了服务升级过程中提供可持续的不中断的服务,K8S提供了Rolling Update机制,它可以使得服务近乎无缝地平滑升级,即在不停止对外服务的前提下完成应用的更新。滚动更新采用渐进的方式逐步替换旧版本Pod,如果更新不如预期&#xff0…

ElementUI组件:Button 按钮

ElementUI安装与使用指南 Button按钮 点击下载learnelementuispringboot项目源码 效果图 el-button.vue页面效果图 项目里el-button.vue代码 <script> export default {name: "el_button",// 注意这里的名称不能和 router inex.js里的name一样methods: {s…
最新文章