【Unity入门实例教程】第三章 Animation Controller进阶

ok,看过上一章的萌新还在郁闷的同学都看过来,想知道高大上的 Controller怎么用吗,怎么做到几个动画的切换与合成,怎么加入高大上的C#脚本,这章统统都会告诉你

【Unity入门实例教程】第三章 Animation Controller进阶_第1张图片 

在project项目视图中载入我们要用到的动画,再创建一个动画控制器(字好长,以下简称AC),进到AC编辑面板
【Unity入门实例教程】第三章 Animation Controller进阶_第2张图片 
这就是我做好的,目前还只能先前走(因为没想好怎么让他向后转),向上跳。
很复杂对不对,让我们一步一步来
【Unity入门实例教程】第三章 Animation Controller进阶_第3张图片       【Unity入门实例教程】第三章 Animation Controller进阶_第4张图片 
Idle是一个静止状态的动画(黄色代表默认状态),如上图所示
第一步,我们想要让他按A键的时候向上跳,这里就需要用到C#和parameters了
【Unity入门实例教程】第三章 Animation Controller进阶_第5张图片       【Unity入门实例教程】第三章 Animation Controller进阶_第6张图片 

理解成控制因素或是触发条件都可以
让我们加入jump动画(不是默认动画都显示灰色)再在parameters里添加一个Bool变量
——————————————————————前方高能预警——————————————————————
         以下内容适合有编程基础或是面向对象编程基础的同学食用
                 (我会尽量讲得通俗易懂)
【Unity入门实例教程】第三章 Animation Controller进阶_第7张图片 

Trigger变量是什么,我们在这里把float,int,bool,trigger理解为一个个开关
float:小数,可以进行对带小数的控制;比如这个小数可以代表时间,位移......当他们满足一定条件(马上就会讲了)触发动画,这个用的多
int:整数,道理和上面一样,但是它是离散型的,控制的时候个人感觉没小数好
bool:是否,布尔值只有两个值,true和false。可以true的时候怎样怎样,false的时候怎样怎样
trigger:也是是否,就是set的时候为true,但是用完就会变回false
OK,我们现在创建了一个trigger型变量,我们给他起个名叫isJump
 

现在我们就可以用他来修改控制条件了
【Unity入门实例教程】第三章 Animation Controller进阶_第8张图片 

右键idle,选择make transition可以创建从idle到jump的转换链,反之,右键jump动画,就可以创建从jump到idle的箭头
然后我们就创建了一个箭头,点一下创建的那根箭头
【Unity入门实例教程】第三章 Animation Controller进阶_第9张图片 

第二步,在inspector检视视图中设置动画转换
【Unity入门实例教程】第三章 Animation Controller进阶_第10张图片 
 

Conditions就是所谓的过度条件。

注意:如果一个动画有Conditions建议取消Has Exit Time,会出现无法及时触发的问题。

Has Exit Time就是必须过度的时间,处于这个时间时,是不允许任何对动画的操作的。

点击加号创建condition我们看到如下的情况

 

这样表示触发isJump的时候触发condition因为isJump使用的时候是true

浮点型(float)有两个触发方式

【Unity入门实例教程】第三章 Animation Controller进阶_第11张图片 

greater指float变量大于多少的时候触发

less指小于多少的时候触发

——————————————————————番外篇开始——————————————————————

添加多个condition的时候要注意,必须全部满足才能触发千万不要犯以下错误

【Unity入门实例教程】第三章 Animation Controller进阶_第12张图片 (初中生就能理解的低级错误我就犯过)

这是“且”条件,或条件是在一个箭头再添加一个同方向的箭头(特别注意我画红字的地方)

或条件设置方法

先设置第一个箭头

【Unity入门实例教程】第三章 Animation Controller进阶_第13张图片 

再设置第二个箭头,两个箭头会合并成一个大箭头

【Unity入门实例教程】第三章 Animation Controller进阶_第14张图片 

——————————————————————番外篇结束——————————————————————

第三步,刚刚我们设置好了动画的触发条件,但是怎么让变量随着玩家的控制动起来,就需要用到C#脚本

先创建一个脚本

双击进去(我用的VS2017 communication版)大家用记事本也是可以编辑的

【Unity入门实例教程】第三章 Animation Controller进阶_第15张图片 

这就是编译器的界面

关于按键控制,请看我推荐的大神帖

https://blog.csdn.net/cbbbc/article/details/51251279

以及大神评论

【Unity入门实例教程】第三章 Animation Controller进阶_第16张图片 

设置的parameter变量在脚本里怎么用,就是这么用

浮点型就是setFloat,整形就是setInt,布尔型就是SetBool

强烈推荐Visual Studio + AssistX插件,自动查错,自动补齐,把鼠标移到上面还能查语法,后面括号写什么参数一目了然

 

后面写String name,就是字符串。是谁的名字呢?没错,就是设置的控制变量的名字

【Unity入门实例教程】第三章 Animation Controller进阶_第17张图片 

现在知道怎么回事了吧

 

保存完了后

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Controller : MonoBehaviour {
 
    public Animator anim;     //动画的脚本这一句必写,可能就是名字不是anim,可能是别的什么。这都不重要。
    private 
        void Start () {
        anim = GetComponent();     //这一句也必写,相当于你演戏总要先有舞台一样
        }
         
        void Update () {
        if (Input.GetKeyDown(KeyCode.W))    //这里用按下事件,请看大神贴
        {
            anim.SetTrigger("isJump");       //请看大神评论
        }
    }
}

再把脚本拖到Hierarchy层级视图中的人物模型名字上,就能给人物添加脚本了

【Unity入门实例教程】第三章 Animation Controller进阶_第18张图片 

运行游戏,能跳,下不来了..........

【Unity入门实例教程】第三章 Animation Controller进阶_第19张图片 

因为没有回去的箭头....

【Unity入门实例教程】第三章 Animation Controller进阶_第20张图片

screenshot_20180806_143307.png(61.67 KB, 下载次数: 0)

下载附件  保存到相册

半小时前 上传

 

我们设置bool型back变量,设置好condition

【Unity入门实例教程】第三章 Animation Controller进阶_第21张图片 

/*
 * 超级无敌终极版
 * C#跳跳跳脚本
 */
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Controller : MonoBehaviour {
 
    public Animator anim;     //动画的脚本这一句必写,可能就是名字不是anim,可能是别的什么。这都不重要。
        void Start () {
        anim = GetComponent();     //这一句也必写,相当于你演戏总要先有舞台一样
        }
         
        void Update () {
        anim.SetBool("back", false);        //初始化为false
        if (Input.GetKeyDown(KeyCode.W))    //这里用按下事件,请看大神贴
        {
            anim.SetTrigger("isJump");       //请看大神评论
        }
        else                                //这个部分是后添加的
        {
            anim.SetBool("back", true);
        }
    }
}

好了,这一章就到这里了

你可能感兴趣的:(Unity入门教程)