Unity 动画系统(Animation,Animator,Timeline)
Posted 明明明h
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 动画系统(Animation,Animator,Timeline)相关的知识,希望对你有一定的参考价值。
文章目录
1. Animation
1.1 创建Animation
- 选中需要添加动画的物体,打开Animation面板
点击Create创建动画
1.2 Animation 属性
2. Animator
2.1 Animator 组件
当我们为物体创建 Animation 时。一个 Animator已经悄无声息地出现在了对应的GameObject上
2.2 Animation 状态
每个Animator Controller都会自带三个状态:Any State, Entry 和 Exit。
- Any State 状态
表示任意状态的特殊状态。例如我们如果希望角色在任何状态下都有可能切换到死亡状态,那么Any State就可以帮我们做到。当你发现某个状态可以从任何状态以相同的条件跳转到时,那么你就可以用Any State来简化过渡关系。 - Entry 状态
表示状态机的入口状态。默认情况下Animator组件会播放哪个动画呢由Entry来决定的。
可以任意一个状态上通过 鼠标右键->Set as Layer Default State更改默认状态。
- Exit 状态(用时百度)
2.3 状态控制参数
添加状态参数:
点击状态间的连线,在Inspecter窗口中可以进行设置,在Conditions栏下可以添加条件,如下图表示当参数
animPara为0时会执行这个动画Any State到New State的过渡
2.4 代码中控制状态
Animator ator = go1.GetComponent<Animator>();
ator.SetInteger("animPara", 1);
3. 代码控制动画的播放/暂停/继续播放
- 重新播放
Animator.Play(state, layer, normalizedTime)
// 比如有一个叫“hit”的动画,在layer 0层中
animator.Play("hit", 0, 0f);
- 暂停和继续播放
Animator
// 播放
animator.Play("ani_name");
// 暂停
animator.speed = 0;
// 继续播放
animator.speed = 1;
Animation
// 播放
animition.Play("ani_name");
// 暂停
animition["ani_name"].speed = 0;
// 继续播放
animition["ani_name"].speed = 1;
unity 5.6 animation与anmimator
Animation动画的创建方式:
(1)选择所需添加动画的控制对象
首先点击AddCompoent按钮,为控制对象添加animation组件。
(2)window菜单下添加animation控件,或ctr+6快捷键
点击Creat按钮,并保存一个AniTest.anim文件
(3)制作所需要的动画,并保存
(4)添加脚本即可(默认会自动播放一个,如果有多个动画,则可以用以下代码选择需要播放的动画片段)
Animator动画的创建方式:
(1)直接在选中的对象上添加animation组件,这样直接生成两个文件
(2)选中游戏对象,制作所需的动画片段(都是大神,就不一一截图了)
(3)相同方式创建2个或以上的动画片段(后面动画状态切换需要用到)
(4)选中刚才的cube对象,在window菜单下选择animator组件,默认只有一个片段在里面
(5)再拖一个刚才制作好的片段进去
(6)右键点击选择make transition链接两个片段
(7)下面是关键,仔细看图
将layer状态切换到parameters状态
点击眼睛下面那个+号,我选的时bool型
修改变量名
(8)选中AniTest01或者那根AniTest01→AniTest02这个→都可以
在右边检视面板中科院看到
(9)点击右下角的加号,即可添加有AniTest01→AniTest02的条件
同样方法,添加AniTest02→AniTest01的执行条件
这里打钩表示 为true的条件下才执行
(10)最后在刚才的cube对象上添加脚本
Animator _anitor;
// Use this for initialization
void Start ()
{
_anitor = gameObject.GetComponent<Animator> ();
}
// Update is called once per frame
void Update ()
{
if (Input.GetMouseButtonDown (0))
{
_anitor.SetBool ("IsChange01",false);
_anitor.SetBool ("IsChange02",true);
}
if (Input.GetMouseButtonDown (1))
{
_anitor.SetBool ("IsChange01",true);
_anitor.SetBool ("IsChange02",false);
}
}
代码只是一个非常简单的运用,更实际的运用得到具体项目中去。
附:第一次发表,水平及其有限,忘大神勿喷,感谢各位看客!!!!!
以上是关于Unity 动画系统(Animation,Animator,Timeline)的主要内容,如果未能解决你的问题,请参考以下文章