首页 > Unity > 在Unity3D中使用精灵动画引擎制作动画的两种方法
2018
07-25

在Unity3D中使用精灵动画引擎制作动画的两种方法

作者:Vivek Tank

本文节选翻译自Gamasutra社区博客,文中观点仅代表作者本人意见,与本公众号无关。

在Unity3D中使用精灵动画引擎的两种方法

本文将介绍两种简单快捷的方法来制作游戏角色动画。

1、动画和动画控制器

设置场景

在Unity3D中使用精灵动画引擎制作动画的两种方法 - 第1张  | FreemanApp

添加用于此场景中不同动画的精灵文件夹

创建一个2D 精灵对象,并把空闲动画的第一个精灵分配给它

创建名为AnimationWithScripting的脚本并将其添加到主对象上

现在,按照以下步骤创建不同的动画

(1)把Idle Animation文件夹中所有的精灵拖动到我们的主对象上,一个新动画就做好啦。然后Unity会把这个动画名称命名为Idle。

(2)把Kick Animation文件夹中所有的精灵拖动到我们的主对象上,一个新动画就做好啦。Unity会把这个动画名称命名为Kick。

(3)把Walking Animation文件夹中所有的精灵拖动到我们的主对象上,一个新动画就又做好啦。Unity会把这个动画名称命名为Walk。希这样三个动画就准备好了。

(4)动画控制器会自动添加到主对象中。

(5)现在根据下图设置过渡和触发。

在Unity3D中使用精灵动画引擎制作动画的两种方法 - 第2张  | FreemanApp

以下转换中要设置的触发器:

在Unity3D中使用精灵动画引擎制作动画的两种方法 - 第3张  | FreemanApp

脚本代码如下:

  1. ScriptToAnimate.cs
  2. using UnityEngine;
  3. using System.Collections;
  4. public class ScriptToAnimate : MonoBehaviour
  5. {
  6.     public Animator animator;
  7.     void Update()
  8.     {
  9.         if (Input.GetKeyDown(KeyCode.I))
  10.         {
  11.             animator.SetTrigger(“Idle”);
  12.         }
  13.         if (Input.GetKeyDown(KeyCode.K))
  14.         {
  15.             animator.SetTrigger(“Kick”);
  16.         }
  17.         if (Input.GetKeyDown(KeyCode.W))
  18.         {
  19.             animator.SetTrigger(“Walk”);
  20.         }
  21.     }
  22. }

复制代码

脚本中内容如下:

在Unity3D中使用精灵动画引擎制作动画的两种方法 - 第4张  | FreemanApp

现在回到Unity,选择播放场景,空闲动画处于默认播放状态。分别按下I,K和W键,预览动画。

看到你的角色了吗?

耶!你的角色活起来啦!你的角色现在不仅会呼吸,还会跑会跳啦!

2、使用脚本做动画

设置好场景

在Unity3D中使用精灵动画引擎制作动画的两种方法 - 第5张  | FreemanApp

添加用于此场景中不同动画的精灵文件夹

创建一个2D 精灵对象,并把空闲动画的第一个精灵分配给它

创建名为AnimationWithScripting的脚本,把它连接到主对象上。

脚本代码如下:

  1. AnimationWithScripting.cs
  2. using UnityEngine;
  3. using System.Collections;
  4. public class AnimationWithScripting : MonoBehaviour
  5. {
  6.     public SpriteRenderer spriteRenderer;
  7.     public Sprite[] walk;
  8.     public Sprite[] idle;
  9.     public Sprite[] kick;
  10.     void Start()
  11.     {
  12.         StartCoroutine(Idle());
  13.     }
  14.     void Update()
  15.     {
  16.         if (Input.GetKeyDown(KeyCode.I))
  17.         {
  18.             StopAllCoroutines();
  19.             StartCoroutine(Idle());
  20.         }
  21.         if (Input.GetKeyDown(KeyCode.K))
  22.         {
  23.             StopAllCoroutines();
  24.             StartCoroutine(Kick());
  25.         }
  26.         if (Input.GetKeyDown(KeyCode.W))
  27.       {
  28.             StopAllCoroutines();
  29.             StartCoroutine(Walk());
  30.         }
  31.     }
  32.     IEnumerator Idle()
  33.     {
  34.         int i;
  35.         i = 0;
  36.         while (i < idle.Length)
  37.         {
  38.             spriteRenderer.sprite = idle[i];
  39.             i++;
  40.             yield return new WaitForSeconds(0.07f);
  41.             yield return 0;
  42.         }
  43.         StartCoroutine(Idle());
  44.     }
  45.     IEnumerator Walk()
  46.     {
  47.         int i;
  48.         i = 0;
  49.         while (i < walk.Length)
  50.         {
  51.             spriteRenderer.sprite = walk[i];
  52.             i++;
  53.             yield return new WaitForSeconds(0.07f);
  54.             yield return 0;
  55.         }
  56.         StartCoroutine(Walk());
  57.     }
  58.     IEnumerator Kick()
  59.     {
  60.         int i;
  61.         i = 0;
  62.         while (i < kick.Length)
  63.         {
  64.             spriteRenderer.sprite = kick[i];
  65.             i++;
  66.             yield return new WaitForSeconds(0.07f);
  67.             yield return 0;
  68.         }
  69.         StartCoroutine(Kick());
  70.     }
  71. }

复制代码

5. 在Unity检查器的后续列表中添加步行、踢和空闲状态的精灵

在Unity3D中使用精灵动画引擎制作动画的两种方法 - 第6张  | FreemanApp

脚本中内容如下:

在Unity3D中使用精灵动画引擎制作动画的两种方法 - 第7张  | FreemanApp

现在回到Unity,选择播放场景,空闲动画处于默认播放状态。现在分别按下I,K和W键,预览动画。

看到你的角色了吗?

对!你的角色又活起来啦!又活蹦乱跳啦!有没有很开心呀?

等等,究竟这两个方法哪个比较好?

emmm,在分析器中检查时,这两种方法的运行方式是相同的。

所以,你完全可以根据自己的需要来选择其中一种方法。

via:西山居技术

最后编辑:
作者:freeman
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据