游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5427|回复: 0

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

[复制链接]

8723

主题

8783

帖子

1万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
11952
发表于 2018-7-23 14:28:50 | 显示全部楼层 |阅读模式
作者:Vivek Tank

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

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

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

1、动画和动画控制器

设置场景

微信图片_20180723141455.jpg

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

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

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

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

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

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

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

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

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

微信图片_20180723141508.jpg

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

微信图片_20180723141511.png

脚本代码如下:

  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. }
复制代码

脚本中内容如下:

微信图片_20180723141512.png

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

看到你的角色了吗?

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

2、使用脚本做动画

设置好场景

微信图片_20180723141515.jpg

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

创建一个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.         }
  44.         StartCoroutine(Idle());
  45.     }
  46.     IEnumerator Walk()
  47.     {
  48.         int i;
  49.         i = 0;
  50.         while (i < walk.Length)
  51.         {
  52.             spriteRenderer.sprite = walk[i];
  53.             i++;
  54.             yield return new WaitForSeconds(0.07f);
  55.             yield return 0;
  56.         }
  57.         StartCoroutine(Walk());
  58.     }

  59.     IEnumerator Kick()
  60.     {
  61.         int i;
  62.         i = 0;
  63.         while (i < kick.Length)
  64.         {
  65.             spriteRenderer.sprite = kick[i];
  66.             i++;
  67.             yield return new WaitForSeconds(0.07f);
  68.             yield return 0;

  69.         }
  70.         StartCoroutine(Kick());
  71.     }
  72. }
复制代码

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

微信图片_20180723141520.jpg

脚本中内容如下:

微信图片_20180723141522.jpg

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

看到你的角色了吗?

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

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

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

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

via:西山居技术


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-20 13:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表