Unity简单的实现动画三连击脚本
思路讲解
三连击动作动画状态转换关系如下
(1)Idle->Attack1->Idle
(2)Idle->Attack1->Attack2->Idle
(3)Idle->Attack1->Attack2->Attack3->Idle
很容易理解,实现上述动画状态转换即完成了三连击。
本次才用Animator Controller来实现上述转换。
具体实现
首先介绍一下normalizedTime
这个是animator的属性 其value的小数部分代表播放动画的完成度,及播放了百分之几的动画。
其次在介绍状态结束后冲突
例如现在为状态1,当两条线路条件同时满足该如何选择,是转到状态2,还是沿另一条线转向idle。
再来看下这幅图
看到那个84%了吗 可以通过用鼠标点击向右的三角,显示拖动改变。即第一个动画进行到84%,第二个动画开始。
同理这个是90%,可以理解了吧。
这是状态1向两个状态转换,若条件同时成立转向小的,即84%。
所以把非转向idle的值调小些即可。
条件设置用一个interger attack 和 trigger attack1来控制。
第一个条件为 触发attack1(注意没有等于)
第二个条件为 attack=2
第三个条件为 attack=3
以上为连击顺序,返回idle状态的条件为无;
anim.SetInteger(“attack”,1);
这并不直接控制状态只是起一个防止第二攻击动画自动播放,所以要设置一个非2的值,本次设为1。
static int attack1State = Animator.StringToHash("Base Layer.attack1.1");static int attack2State = Animator.StringToHash("Base Layer.attack1.2");static int attack3State = Animator.StringToHash("Base Layer.attack1.3");void Attack1(){if( currentBaseState.fullPathHash == idleState){if (!anim.IsInTransition(0)){anim.SetTrigger("attack1");anim.SetInteger("attack",1);}}else if(currentBaseState.fullPathHash==attack1State && currentBaseState.normalizedTime>0.5){anim.SetInteger("attack", 2);}else if (currentBaseState.fullPathHash == attack2State && currentBaseState.normalizedTime > 0.5){anim.SetInteger("attack", 3);}else if (currentBaseState.fullPathHash==attack3State){print("PL**************************************PL");}}
Unity简单的实现动画三连击脚本相关推荐
- unity简单自由漫游摄像机控制脚本
"幽灵视角",适合用来漫游场景 把代码加载到摄像机上 using System.Collections; using System.Collections.Generic; usi ...
- 【Unity入门计划】Unity2D动画(2)-脚本与混合树实现玩家角色动画过渡
目录 1 玩家角色移动伴随的简单动画 1.1 行走 1.2 停留 1.3 攻击敌人(触发型) 1.4 受伤(触发型) 1.5 跳跃 1.6 下蹲 2 动画间的过渡 3 过渡的判断逻辑 3.1 行走与停 ...
- Unity Animator入门:使用Animator和trigger参数做简单的UI动画
Unity中使用Animator和trigger参数做简单的UI动画 概述 原理 Toast组件构成 添加Animator组件 创建default状态动画 录制hide和show动画 设置loopTi ...
- Unity Animation从UAS获取动画资产到编制状态机控制简单的人物动画
Animation 动画 0.前言 这个笔记用于讨论在Unity中开发游戏时使用动画的相关知识. 这个笔记最终期望能够达到:在Unity的Demo中展现一个人物,其能够进行类似挥拳.开门的具体动作. ...
- Unity 制作简单的任务动画
Unity 制作简单的任务动画 1.添加人物模型到unity 我使用的是unity store中的免费模型: https://assetstore.unity.com/packages/3d/char ...
- Unity 简单动画
动画组件目前有新旧两种 旧版组件:Animation 我们可以自己简单制作一个动画 动画就是改变物体的数值我们可以添加属性来进行声明改变 添加后,就给了我们两帧,第一帧是什么样,第二帧改变成什么样, ...
- Max动画分割脚本 Unity 自动识别动画分割信息
Max动画分割脚本 Unity3d自动识别动画分割信息 看到TechArtist群里有人想要这个插件,国外网站上收费4.99欧元,想想还是把早期写的脚本拿出来分享吧!部分功能源码参考来至于网络! 功能 ...
- [Unity C#教程] 游戏对象和脚本
文章转载自:https://www.cnblogs.com/UnityYork/p/7704803.html [Unity C#教程] 游戏对象和脚本 博主最近在学习Unity,发现一个英文教程很好. ...
- Unity简单2D游戏开发
Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏--开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Sto ...
最新文章
- 【Qt】QtCreator无法调试终端程序,启动报错SIGSTOP
- Swift2.0系列]Error Handling(项目应用篇)
- if转java_java-从if-else转换为方法
- 如何在电脑上安装python-在电脑上安装python的方法
- 悲剧的程序员用程序写出的爱情
- Python Django Cookie的设置和获取相关属性
- 禅道开源版用户手册_Docker搭建开源版禅道以及项目基本流程介绍
- 我喜欢c语言用英文版,说说我喜欢英语的几个理由
- split函数python_Python numpy.hsplit函数方法的使用
- html中ajax检测用户名实例,利用Ajax检测用户名是否被占用的完整实例
- WPE教程 传奇神秘商店外挂制作
- java工程师可能需要的视频
- TeamViewer安装——好用的远程办公软件
- 小米airdots老是滴滴响_小米 MIUI 11 体验:更好看、更好用,还能一键屏蔽所有广告...
- 中文.com域名如何申请 什么是.com域名过期
- C++中break与continue的用法
- Problem H. Curious (莫比乌斯反演)
- hylafax php,运用PHP发送传真(PHP code for Sending fax)
- 静态库与动态库的区别
- 选择适合的Node.js授权认证策略