Basic,Frame by Frame使用Animator类进行Sprite动画

时间:2014-07-05 23:10:57

标签: animation unity3d sprite

我有一个简单的精灵表,我在Unity项目中使用:

Say hi to Wizzy

它有四个方向的行走和站立的框架。我使用Unity的Sprite Editor剪切了图像,并为每个系列制作了一个单独的Animation对象,所有这些对象都整齐地放在一个动画控制器中:

enter image description here enter image description here

我已将动画控制器添加到我场景中Animator的{​​{1}}组件上。这是我开始遇到麻烦的地方。 我不能为我的生活找出如何在代码中的动画之间进行更改

3 个答案:

答案 0 :(得分:1)

为什么甚至使用代码?只需使用参数将其全部挂在Animator中,然后根据需要更改参数。

答案 1 :(得分:1)

您不应该在脚本中创建动画之间的连接。你所做的就是在Animator中创建连接,并设置变量,如果你站着或走路,你要去哪个方向。然后你只需在脚本中编辑这些变量,Animator负责选择合适的动画。

此视频展示了它的实际效果:Example

(你看到了连接,左下角是他设置的变量)

快速google" mechanim 2d教程"给你:Tutorial

编辑:

评论太长了:)

基本上我要做的是创建2个变量,一个名为&#34的bool; Standing"和一个名为" Direction"的整数。然后,您从AnyState到您拥有的每个其他状态建立一个连接(右键单击AnyState以进行转换)。也许在AnyState周围排一圈。

在此之后,单击连接并在Inspector中通过选择" Standing"设置条件,然后再添加一个并将其设置为" Direction" "的Equals"和方向的数字。

然后在您的更新功能中的某个位置的脚本中,您可能会有以下内容:

private readonly int UP = 0;

...

if(speed.magnitude > 0.0f)
    Animator.SetBool("Standing", false);
else
    Animator.SetBool("Standing", true);


if( Condition for walking up? )
    Animator.SetInteger("Direction", UP);
if( Condition for walking down? )
    Animator.SetInteger("Direction", DOWN);
...

这可能不会直接起作用,但你明白了。您可能希望根据设置方式使用开关。

答案 2 :(得分:0)

Animator.CrossFade功能将达到预期效果:

<强> C#:

Animator animator = this.GetComponent<Animator>();
animator.CrossFade("WizzyWalkDown", 0);

它可能看起来有些过分或反直觉,但请记住,AnimationController类的构建是为了使动画之间的过渡变得容易。尽管如此,它仍然可以用于更简单的动画类型!