Unity Mecanim动画的实现(四):Animation Controller设置
来源:互联网 发布:步步高软件下载中心 编辑:程序博客网 时间:2024/06/06 18:16
Unity Mecanim动画的实现(四):Animation Controller设置
Animation Controller(动画控制器)是Animator的重要组成部分,是模型动画的驱动,动画控制器是通过动画状态机来实现不同动画剪辑的切换。 这里有两个关键词:
1.状态(动画剪辑),动画剪辑就是每个动画模型所可以执行的动画剪辑(Animation),比如休闲(Ideal)、走(Walk)、跑(Run)等。状态以圆角矩形表示,黄色表示默认的状态,即模型的默认动画状态。在实际操作中只要将动画剪辑拖拽到Animation Controller中就可以成为一个状态。
每个状态就是一段动画,可以通过动画剪辑中的speed属性来控制动画播放速度,甚至进行倒序播放。如下图中的Walk-Sheathedback和Walk-Sheathed其实为一个动画剪辑,但是Walk-Sheathedback将速度设定为-1,则其将由Walk-Sheathed的最后一帧往第一帧播放.
2.过渡(Transition),过渡指不同动画之间的切换条件,在动画状态机中以方向箭头表示。状态之间的过渡需要通过状态参数来进行控制,即在Unity中通过脚本控制状态参数之间的变化来控制状态之间的变化。比如在我们可以设定一个Float参数Speed来控制Idle、Walk和Run之间的切换。Idle与Walk之间:Speed>0,Walk;Speed<0.01,Idle。Walk与Run之间,Speed>0.5,Run;Speed<0.5,Walk。通过这个设定我们只要用如下脚本就可以实现模型在Idle、Walk和Run之间切换。
float v=Input.GetAxis("Vertical");//如果不按键,则会为0,如果按键为W则逐渐由0-1变化,松开之后则由1-0变化,如果按下S则由0 - -1变化,松开则-1-0变化_animator.SetFloat(SPEED,v);
通过动画状态机的设置可以简单实现模型的前后走动与跑步,以及实现武器(工器具)动画的切换。切换需要通过代码进行控制
using System.Collections;public class PlayerControllerScript : MonoBehaviour { private Animator _animator; public const string SPEED="Speed"; public const string ISFIGHT="IsFight"; public float speed=10f; public bool isFight=false; // Use this for initialization void Start () { } void Awake(){ _animator=GetComponent<Animator>(); } // Update is called once per frame void Update () { float v=Input.GetAxis("Vertical");//如果不按键,则会为0,如果按键为W则逐渐由0-1变化,松开之后则由1-0变化,如果按下S则由0 - -1变化,松开则-1-0变化 _animator.SetFloat(SPEED,v); if(v>0f){ transform.position+=Time.deltaTime*speed*v*Vector3.forward; }if(v<0f){//如果按键0,则倒退 transform.position+=Time.deltaTime*speed*v*Vector3.forward*0.4f; } if(Input.GetKeyDown(KeyCode.Q)){//按键Q来切换武器 isFight=!isFight; _animator.SetBool(ISFIGHT,isFight); } }}
- Unity Mecanim动画的实现(四):Animation Controller设置
- Unity Mecanim动画的实现(四):Animation Controller设置
- Unity Mecanim动画的实现(八):Animation视图
- Unity Mecanim动画的实现(八):Animation视图
- Unity Mecanim动画的实现(三):Animation编辑之Root Motion
- Unity Mecanim动画的实现(七):动画曲线
- Unity Mecanim动画的实现(七):动画曲线
- Unity Mecanim动画的实现(二):Avatar的配置
- Unity Mecanim动画的实现(一):基本程序
- Unity Mecanim动画的实现(六):动画事件,实现动画过程中的事件处理
- Unity Mecanim动画的实现(六):动画事件,实现动画过程中的事件处理
- Unity Mecanim动画的实现(九):动画层、遮罩与Ik动画
- Unity Mecanim动画的实现(九):动画层、遮罩与Ik动画
- Unity Mecanim动画的实现(十):动画混合树、子状态机和状态行为
- Unity Mecanim动画的实现(十):动画混合树、子状态机和状态行为
- Unity Mecanim动画的实现(五):实现武器的切换
- Unity Mecanim动画的实现(五):实现武器的切换
- Unity3D之Mecanim动画系统学习笔记(四):Animation State
- java调用r语言 实现聚类分析结果返回
- 网络编程基础
- 为链接爬虫添加抓取回调
- 递归算法
- 51单片机用到strcmp比较字符串问题及解决
- Unity Mecanim动画的实现(四):Animation Controller设置
- 2017年第八届蓝桥杯省赛B组 C/C++
- 欢迎使用CSDN-markdown编辑器
- Hive学习第三课 创建数据库和删除数据库
- 关于在linux下清屏的几种技巧
- 远程检测客户机上的系统补丁安装情况与端口开放状态
- Java获取访问设备的ip地址,设备名称
- 《深入理解java虚拟机》学习笔记1——Java内存结构
- JDK,JRE,JVM区别与联系