unity实现 动作游戏的连招/连击
工程下载:https://files.cnblogs.com/files/sanyejun/ComboAttack.7z
全网也没查到比较好的资料,自己弄了个
一共是3个脚本
先上图

黑色为触发条件
绿色和红色为2个动画Behaviour脚本
注意:attack01 attack02 attack03 ——> idle 的has exit time 需要勾选上,其他的都不用
然后attack01 可以连到 attack02 , attack02 可以连到 attack03
那么attack01 和 attack02 需要在动画转折的地方添加动画事件
一个动作
【1.起手】--------------【2.攻击】--------------【3.准备收招转idle】---------------【4.转idle】
那么在 3 这个时间点,添加动画事件,如果可以连击,进入下一个攻击动作,没有的话则进入idle
添加事件:ComboCheck 参数:Int 如果需要2下进下个动作则填 2, 3下则填3
我们这里的attack01 填参数2 attack03填参数3

脚本:
挂人物身上的
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class ComboAttack : MonoBehaviour
{
public Animator anim;
public int clickNum = 0;
private float lastClickedTime = 0;
//2下连击之间按键的最长延迟
public float maxComboDelay = 0.9f;
private static readonly int AttackCombo = Animator.StringToHash("attackCombo"); // Start is called before the first frame update
void Start()
{
anim = GetComponent<Animator>();
} // Update is called once per frame
void Update()
{
if (Time.time - lastClickedTime > maxComboDelay)
{
clickNum = 0;
} if (Input.GetMouseButtonDown(0))
{
lastClickedTime = Time.time;
clickNum++;
if (clickNum == 1)
{
anim.SetBool(AttackCombo, true);
} clickNum = Mathf.Clamp(clickNum, 0, 3);
}
} public void ComboCheck(int num)
{
if (clickNum >= num)
{
anim.SetBool(AttackCombo, true);
}
} public void ClearComboClickNum()
{
clickNum = 0;
}
}
动画的Behaviour
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class AttackComboNumClear : StateMachineBehaviour
{
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.GetComponent<ComboAttack>().ClearComboClickNum();
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class AttackComboBehaviour : StateMachineBehaviour
{
private static readonly int Attack = Animator.StringToHash("attackCombo"); // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.SetBool(Attack, false);
}
}
unity实现 动作游戏的连招/连击的更多相关文章
- 张瀚荣:如何用UE4制作3D动作游戏
转自:http://www.gamelook.com.cn/2015/06/218267 GameLook报道/ 6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次 ...
- 总结使用Unity 3D优化游戏运行性能的经验
原地址:http://www.gameres.com/msg_221889.html 作者:Amir Fasshihi 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow ...
- (转)总结使用Unity 3D优化游戏运行性能的经验
http://www.199it.com/archives/147913.html 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow Blade>已经将在标准iPh ...
- [转]总结使用Unity 3D优化游戏运行性能的经验
转载自:http://www.gameres.com/msg_221889.html 作者:Amir Fasshihi 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow ...
- Spine应用--使用Spine动画制作动作游戏
在前面的文章中,已经陆陆续续的讲解了一些使用Spine动画的细节,有了这些细节,我们已经满足了在unity中使用Spine动画制作动作游戏的技术基础. 那么,要使用Spine动画在unity中制作一款 ...
- Unity中制作游戏的快照游戏支持玩家拍快照
Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...
- Unity塔防游戏开发
Unity3D塔防开发流程 配置环境及场景搭建编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG More开发工具:Unity3D编辑器.Visual Studio编译器开发建议:了解Uni ...
- unity开发android游戏
环境搭建: Unity+JDK+Android Studio+Android SDK(+NDK) 教程:unity开发android游戏(一)搭建Unity安卓开发环境 注意“Build System ...
- Siki_Unity_1-8_使用Unity开发2D游戏_PongGame
Unity 1-8 使用Unity开发2D游戏 PongGame 任务1:演示 http://pan.baidu.com/s/1pKUHsev; up2i 任务2:案例介绍 创建PongGame,注意 ...
- unity开发android游戏(一)搭建Unity安卓开发环境
unity开发android游戏(一)搭建Unity安卓开发环境 分类: Unity2014-03-23 16:14 5626人阅读 评论(2) 收藏 举报 unity开发androidunity安卓 ...
随机推荐
- 【记录】IDA|Ollydbg|两种软件中查看指令在原二进制文件中的位置,及查看原二进制文件位置对应的反汇编指令的方式
文章目录 在IDA中查看指令地址 在Ollydbg中查看指令地址 在Ollydbg中查看地址对应的指令 在IDA中查看指令地址 在Ollydbg中查看指令地址 ollydbg在对应指令处,右键-查看- ...
- RPC实战与核心原理之网络通信
架构设计:涉及一个灵活的RPC框架 回顾 RPC的通信原理及RPC中各个功能组件的作用 RPC就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保证服务提供方能正确还原出语义,最终实现想调用本地 ...
- 再论“ArcGIS AddIN之工具不可用”
工作需要,开发arcgis的addin插件.从网上找了工程范例,编译dll,没有生成esriAddIn文件. 第二次,重新创建addin类型的动态库工程,从范例中复制类文件到工程中,编译dll,正常生 ...
- 判别式 AI 与生成式 AI
本文摘选来自: AI 智能体开发指南 一.背景 为了解决不同的应用场景,在AI的发展过程中,机器学习模型逐步分化为 判别式(Discriminative)和生成式(Generative) 两各技术路线 ...
- java数组--对象数组的随机赋值及其他
包含考点: 对象数组的随机赋值 浮点数的指定位数 换用思路进行对象数组的某一属性进行排序 现有Book类,定义如下: private String author; private String ISB ...
- Error while fetching metadata from server 'https://start.spring.io' Please check URL, network and proxy settings.
idea创建springboot项目失败,提示: Error while fetching metadata from server 'https://start.spring.io' Please ...
- 洛谷 P4820 [国家集训队]书堆
题目描述 让N本密度均匀的相同的书摆在桌上.最下面的摆在桌子边缘,其他的书依次堆叠在一本书上.每本书都只能水平放置,宽必须垂直于桌子边缘.如(洛谷的)图: 求书本最右能到多远(这个距离是指最右边的书的 ...
- JDBC入门详解
JDBC概念 JDBC就是Java操作关系型数据库的一套API,其中真正的实现类由不同的数据库驱动(也就是jar包)实现. JDBC连接数据库步骤 创建项目,导入jar包 注册驱动,即告诉Java代码 ...
- 关于Node.js 构建中遇到node-gyp报错问题的解决方案记录
项目今天进行版本更新,在走阿里云流水线的时候,出现了Node.js 构建过程报错问题,抱歉详情截图如下: 经过反复排查,最终发现是因为阿里云的npm仓库的问题,于是果断更换npm仓库,执行命令如下: ...
- NGINX配置gzip压缩VUE的静态文件报告
nginx 配置: # 写在了server{括号中} # 开启gzip gzip on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_min_length 1k; # 设置压 ...