ok,看过上一章的萌新还在郁闷的同学都看过来,想知道高大上的 Controller怎么用吗,怎么做到几个动画的切换与合成,怎么加入高大上的C#脚本,这章统统都会告诉你
在project项目视图中载入我们要用到的动画,再创建一个动画控制器(字好长,以下简称AC),进到AC编辑面板
这就是我做好的,目前还只能先前走(因为没想好怎么让他向后转),向上跳。
很复杂对不对,让我们一步一步来
Idle是一个静止状态的动画(黄色代表默认状态),如上图所示
第一步,我们想要让他按A键的时候向上跳,这里就需要用到C#和parameters了
理解成控制因素或是触发条件都可以
让我们加入jump动画(不是默认动画都显示灰色)再在parameters里添加一个Bool变量
——————————————————————前方高能预警——————————————————————
以下内容适合有编程基础或是面向对象编程基础的同学食用
(我会尽量讲得通俗易懂)
Trigger变量是什么,我们在这里把float,int,bool,trigger理解为一个个开关
float:小数,可以进行对带小数的控制;比如这个小数可以代表时间,位移......当他们满足一定条件(马上就会讲了)触发动画,这个用的多
int:整数,道理和上面一样,但是它是离散型的,控制的时候个人感觉没小数好
bool:是否,布尔值只有两个值,true和false。可以true的时候怎样怎样,false的时候怎样怎样
trigger:也是是否,就是set的时候为true,但是用完就会变回false
OK,我们现在创建了一个trigger型变量,我们给他起个名叫isJump
现在我们就可以用他来修改控制条件了
右键idle,选择make transition可以创建从idle到jump的转换链,反之,右键jump动画,就可以创建从jump到idle的箭头
然后我们就创建了一个箭头,点一下创建的那根箭头
第二步,在inspector检视视图中设置动画转换
Conditions就是所谓的过度条件。
注意:如果一个动画有Conditions建议取消Has Exit Time,会出现无法及时触发的问题。
Has Exit Time就是必须过度的时间,处于这个时间时,是不允许任何对动画的操作的。
点击加号创建condition我们看到如下的情况
这样表示触发isJump的时候触发condition因为isJump使用的时候是true
浮点型(float)有两个触发方式
greater指float变量大于多少的时候触发
less指小于多少的时候触发
——————————————————————番外篇开始——————————————————————
添加多个condition的时候要注意,必须全部满足才能触发千万不要犯以下错误
这是“且”条件,或条件是在一个箭头上再添加一个同方向的箭头(特别注意我画红字的地方)
或条件设置方法
先设置第一个箭头
再设置第二个箭头,两个箭头会合并成一个大箭头
——————————————————————番外篇结束——————————————————————
第三步,刚刚我们设置好了动画的触发条件,但是怎么让变量随着玩家的控制动起来,就需要用到C#脚本
先创建一个脚本
双击进去(我用的VS2017 communication版)大家用记事本也是可以编辑的
这就是编译器的界面
关于按键控制,请看我推荐的大神帖
https://blog.csdn.net/cbbbc/article/details/51251279
以及大神评论
设置的parameter变量在脚本里怎么用,就是这么用
浮点型就是setFloat,整形就是setInt,布尔型就是SetBool
强烈推荐Visual Studio + AssistX插件,自动查错,自动补齐,把鼠标移到上面还能查语法,后面括号写什么参数一目了然
后面写String name,就是字符串。是谁的名字呢?没错,就是设置的控制变量的名字
现在知道怎么回事了吧
保存完了后
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层级视图中的人物模型名字上,就能给人物添加脚本了
运行游戏,能跳,下不来了..........
因为没有回去的箭头....
screenshot_20180806_143307.png(61.67 KB, 下载次数: 0)
下载附件 保存到相册
半小时前 上传
我们设置bool型back变量,设置好condition
/*
* 超级无敌终极版
* 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);
}
}
}
好了,这一章就到这里了