Unity 动画系统(Animation,Animator,Timeline)

Posted 明明明h

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 动画系统(Animation,Animator,Timeline)相关的知识,希望对你有一定的参考价值。

文章目录

1. Animation

1.1 创建Animation

  1. 选中需要添加动画的物体,打开Animation面板


    点击Create创建动画

1.2 Animation 属性

2. Animator

2.1 Animator 组件

当我们为物体创建 Animation 时。一个 Animator已经悄无声息地出现在了对应的GameObject上

2.2 Animation 状态

每个Animator Controller都会自带三个状态:Any State, Entry 和 Exit。

  1. Any State 状态
    表示任意状态的特殊状态。例如我们如果希望角色在任何状态下都有可能切换到死亡状态,那么Any State就可以帮我们做到。当你发现某个状态可以从任何状态以相同的条件跳转到时,那么你就可以用Any State来简化过渡关系。
  2. Entry 状态
    表示状态机的入口状态。默认情况下Animator组件会播放哪个动画呢由Entry来决定的。

    可以任意一个状态上通过 鼠标右键->Set as Layer Default State更改默认状态。
  3. Exit 状态(用时百度)

2.3 状态控制参数

添加状态参数:

点击状态间的连线,在Inspecter窗口中可以进行设置,在Conditions栏下可以添加条件,如下图表示当参数
animPara为0时会执行这个动画Any State到New State的过渡

2.4 代码中控制状态

Animator ator = go1.GetComponent<Animator>();
ator.SetInteger("animPara", 1);

3. 代码控制动画的播放/暂停/继续播放

  1. 重新播放
Animator.Play(state, layer, normalizedTime)	
// 比如有一个叫“hit”的动画,在layer 0层中
animator.Play("hit", 0, 0f);
  1. 暂停和继续播放

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)的主要内容,如果未能解决你的问题,请参考以下文章

unity 5.6 animation与anmimator

unity animator 怎么判断动画正在播放

unity3d 如何用GUI按钮播放动画脚本怎么写

Unity中制作动画

unity2d在animator组件里一个anim动画运行的过程中怎样直接切换到另一个?

unity3D5旧动画系统注意事项