Unity 代码控制Animator动画
在搜索框写入自己控制脚本的名字(注意不能和其他组件的名字重复,一般下方的待选相,没有了以后就说明当前代码名称是独一无二的),然后点击 New script。1.3将动画机的控制变量添加到需要控制的两个动画机连线上,点击动画机连线选(注意需要控制的动画机执行方向),点击连线后在Inspector 面我们可以在下方找到Conditions属性,点击属性的“+” 加号键添加控制。直接上代码使用空格键控制
Unity 代码控制Animator动画
目录
一 、 添加变量
-
- 首先在动画机面板Animator中找到Parameters属性 ,选择Parameters属性
1.2选择后点击 “+” 加号按钮选择需要的类型(float 、int、bool、trigger)的变量,
-
- Bool类型 的添加,点击Bool点击Bool变量类型,在左侧的小窗内就可以我们新添加的Bool类型的控制变量,控制变量可以根据动画的操作进行名字修改(选中选需要修改的控制变量,再次点击变量即可进入变量名修改)
1.3将动画机的控制变量添加到需要控制的两个动画机连线上,点击动画机连线选(注意需要控制的动画机执行方向),点击连线后在Inspector 面我们可以在下方找到Conditions属性,点击属性的“+” 加号键添加控制。(注意:Has Exit Time 属性如果不需要等待上一个动画播放完毕需要将其选项取消勾选,默认勾选)
1.4选择需要的控制变量,注意默认添加的是否是自己需要的变量,以及动画切换的触发条件。
1.5此时运行程序,初始动画机将不会自动进入下一个动画机。将Bool控制变量更改为我们设置的触发状态时动画将直接播放下一个动画。
二 、 代码控制变量
2.1添加脚本并获取动画组件,并设置变量。(直接上代码使用空格键控制动画的切换,不知道如何添加脚本可以直接下拉到底(添加脚本
)。)
private Animator animator;//声明变量
// Start is called before the first frame update
void Start()
{
animator = GetComponent<Animator>();//获取Animator组件,直接使用只可以获取挂载物体上的组件(GetComponent<需要获取的组件>())
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))//当按下空格时执行Space可以更改为键盘任意键(只要开心就好)
{
Animator_Play();//使用设置变量的方法
// animator.Play("002");//animator.Play("动画机名称")--该方法可以直接播放指定动画(没有过度)
}
}
/// <summary>
/// 设置动画机变量
/// </summary>
public void Animator_Play()
{
animator.SetBool("Is_Up",true);//设置bool类型变量--SetBool("自己的变量名",变量的状态(true/false))
//animator.SetFloat("Is_Up",1.234f);//设置Float类型变量--SetFloat("自己的变量名",触发数值)
//animator.SetTrigger("Is_Up");//设置Trigger类型变量--animator.SetTrigger("自己的变量名");只触发一次
//animator.SetInteger("Is_Up",1);//设置Int类型变量--SetInteger("自己的变量名",整数类型的数字)
}
//设置动画机控制变量为(false 或其他不能触发的数字即可)
void Animator_Stop()
{
animator.SetBool("Is_Up", false);//设置bool类型变量--SetBool("自己的变量名",变量的状态(true/false))
}
2.2运行效果当按钮下空格键后bool 变量处于激活状态,动画向下执行
三 、 添加脚本
1. 点击模型在Inspector 面板下面找到Add Component 按钮点击。在搜索框写入自己控制脚本的名字(注意不能和其他组件的名字重复,一般下方的待选相,没有了以后就说明当前代码名称是独一无二的),然后点击 New script 。
2.确认名字 然后点击Create and Add 系统将会自动生成一个,你自定义名字的脚本。
3点击完成后就可以看到界面多了一个自己命名的脚本了。
4.双击Script属性里的脚本即可以自动打开脚本。
更多推荐
所有评论(0)