• Unity 2D骨骼动画2:创建真实动画


    http://bbs.9ria.com/thread-401781-1-1.html

    在这个系列,我们将关注Unity引擎提供的基于骨骼动画工具。它的主要思想是为了把它应用到你自己的游戏来介绍和教基本的2D动画原理。在这节课中,我们将添加闲置,跳跃和动画。

    在开始这个课程前,我们将感谢Chenguang (DragonBonesTeam)给我们提供用于本系列教程游戏艺术。

    离开的地方

    上一节课,我们引入2d精灵来代表游戏角色,使用Unity精灵编辑器切片来构造最基本的角色。如果你没有完成前面的教程,我们强烈建议你这样做,因为你需要2d角色来跟随本教程。

    预览效果

    这个demo演示了龙的动画,我们的目标是 –点击Space键就跳:

    如果看不到可以点击这个链接


    一般动画理论

    有几个重要的概念,在做动画的时候需要记住。这个课程的目标是,假定我们在2D或者3D动画中没有经验,你从来也没有使用动画软件。

    动画,据我们所知,已经从绘画到数字化。有几十种混合动画技术,但所有的这些共享都有一个基本原则,像对口型,挤压或者步行周数。

    为了了解动画,你必须第一个了解frame(帧)概念。一帧是由许多静态图像组成的一个动画之一。如果你暂停一个卡通形象,这张图像就是我们在电视上看到的单独帧。

    传统动画和电脑动画的主要区别在于工具的使用。传统动画是一个动手做的过程,就是艺术家必须画画来组成成千上万的单个帧。电脑动画不需要很多工具,一般情况下,简化了整个过程。

    举个例子说明,传统的动画艺术家必须画出几乎每一帧的动画,而电脑动画的艺术家能使用我们称之为关键帧的点。这些关键帧,正如它的名字指定,是舞台动画的关键阶段。基本上,画家创建这些关键帧的点,接着电脑在他们之间插入一些丢失的帧。可以想象到,这种类型的过程是比劳动密集型的低得多。

    你能定义一些关键帧作为静态图像动画序列,而且这个序列在关键点发生。岩石下降是一个很好的例子:在空中岩石开始的位置是一个关键帧,岩石在地面上的最终位置是另外一个关键帧。电脑会自动生成其他所有帧。我们把关键帧之间的帧叫做补间帧,它们的主要任务是负责创建运动的假象。

    帧也可以用来作为一个单元的时间。举个例子,如果你看到一个动画持续了20帧。任何动画真正的持续时间取决于帧速率,可以随动画的格式。在北美和日本的标准是每秒30帧(fps),而世界的其他地方标准是每秒25.

    动画

    既然你知道了基本的动画和电脑动画具体来说,让我们回到Unity开始我们角色动画。

    第一步是在Assets下创建一个叫animations的文件夹,用它来保存你的角色动画。

    图片1.png

    接下来,打开在Unity里面(Window下的Animation)的动画面板:

    图片2.png

    你可以看到,面板上包含一个水平时间轴,一个记录按钮,一个播放按钮,和一对浏览帧的按钮。

    抓住旁边的动画窗口和控制台的选项卡(注意你使用2D布局在Unity 2D Arkanoid教程来创建)。通过这种方式,你可以在打开的动画面板工作。

    图片3.png

    空闲动画

    你将要给龙创建三种不同种类的动画:空闲的动画,跳跃的动画,和下降的动画。

    制作第一个动画,选中Dragon游戏对象,然后在动画面板点击Add Curve。一个新的弹出窗口会问你要重命名动画文件和该文件要保存在哪个地方。Unity动画文件有.anim扩展名,你在前面创建的动画文件会保存在Animations文件夹下。创建一个叫Idle.anim的文件。

    图片4.png

    你可能会注意到一点,一旦保存文件,编辑器的布局有几点要改变:

    图片5.png

    如果你看一下在场景顶部的Play按钮,你会注意到他们已经变红了。在动画面板的记录按钮现在也是红色的,而且你会看到有一条红线在时间轴上。这意味着显示录音模式。同样的,你看一下监控器,你会看到Unity自动添加上一个新的组件到你的游戏对象中:Animator

    Animator组件是关于一个动画控制器,是用来设置角色行为。这包括设置状态机,混合树和受脚本控制的事件。基本上,Animator的角色和其行为之间的联系。

    稍后我们将以更高的深度来讨论Animator组件;但现在,让我们的注意力集中在动画,在龙这个游戏对象中,选中头部:

    图片6.png

    在动画的时间轴上,拖拽红色的线到1:00(在一分钟的地方)。

    图片7.png

    现在,在监控器上,设置Z轴的旋转率为7.9。你会注意到,现在有一些小的形状在时间轴上。这些标志表明是动画的关键帧。

    图片8.png

    移动红色的线移动到2:00,然后设置头部Z轴的旋转到0:

    图片9.png

    再次按下记录按钮停止记录方式。现在你可以按下播放按钮来测试动画。如果一切顺利,龙的头应该上下摆动。

    调整动画

    龙头似乎旋转复读太大了。因为我们只是想要龙点头,所以我们需要编辑动画。

    重新按下按钮转为记录模式,然后把红线移动到1:00分。旋转Z轴的旋转值为2.05.。

    图片10.png

    点击记录按钮退出记录模式,然后再次测试动画。

    你可以看到,编辑一个动画,你字需要选择想要的关键帧,然后改变它。如果你需要改变一个动画的时机—就例如动画太快或者太慢—你可以拖动时间轴上的标志到你最想要的帧频上。

    好了,现在头部的动画好了,然是你还要整个身体动作。因为你建立的角色做一个层次,而不是孤立的游戏对象,你不需要创建每个身体部位的单一动画;相反的,只要点击Add Curve按钮标志和选择不同的身体部位。点击按钮选中龙尾巴。

    尝试让龙尾巴上下摆动。想刚刚做的那样,使用Z轴的旋转轴在时间轴的02分钟间。

    图片11.png

    幸亏图层结构已经创建,当你移动尾巴的使用,引擎也会自动移动尾巴尖端。然而,你也可以单独选尾巴尖端制作动画。

    非常棒!现在给身体的剩下部位制作闲置的动画。花点时间,你需要编辑动画,知道完全满意。动画花费时间和你也永远不会再第一尝试就得到自己想要的结果。最后,时间轴看起来想这个样子:

    注意一点,对于闲置的动画,你不需要改变龙的中心(黑点)的任何值。

    跳跃运动

    对于跳跃运动,你需要重新创建一个新的动画文件。为了做这个动作,在动画面板,点击Idle标签,然后选择新建影片。

    命名为Jump.anim然后保存到Animations文件夹。

    图片14.png

    这个动画,你想要龙要跳跃头要往上抬。因为我们已经使用Unity创建动画涉及到的基本点,我们将要给一些提示而不是知道你完成整个过程。

    在你开始做之前,你需要选中龙这个游戏对象,并开始通过添加曲线。让我们从头部开始。这个动画将是最短的一个,所以在0:30秒做。在Z轴选旋转头查找。

    图片15.png

    为了防止头部是完全静止,你能添加一些小动作到里面。你也可以通过添加一点旋转来完成这个目的。

    给剩下的其他身体部位重复这个过程。记住,动画应该像这个角色是在半空中。

    接着我们将教你如何完成整个跳跃。仅供参考,试图让你角色的姿势提出类似如下的:

    图片16.png

    你做了吗?漂亮!

    现在,让我们关注最后的动画,下降动画。

    下降动画

    角色现在可以跳跃了,但是由两个部分构成一个完成的跳:本身的跳跃,即角色从底板上弹起,然后下降,当角色移动再起下降。现在忘掉第二部分的动画跳,下降动画。

    像之前,在动画面板,点击当前动画名字的标签,然后选择创建新的影片。

    图片17.png

    保存新的动画到Animations文件夹,并命名为Fall.anim。

    图片18.png

    这一次,你想要角色往下降是要看下面。为了达到这个要求,你需要点击Add Curve按钮并开始摆动龙,像Jump动画,大概30秒处于这种状态。

    选中身体部位重复这个过程,然后为整个角色(除了黑点)创建一个各自的关键帧。再次,你添加中间的关键帧来确保在下降过程中角色不是静态的。

    下一回

    第二个教程就是解释如何在Unity中创建一个基于骨骼2d动画。你已经了解了动画了基础和在三种类型的动画中创建关键帧。下一节课,我们将连接不同的动画,混合它们和通过脚本调用它们。

    到目前为止,如果你有任何问题或反馈,可以再下面发表评论。

    参考资料

    · 龙精灵表:从Chenguang 的DragonBonesTeam获得适用权限


    原文链接:http://gamedevelopment.tutsplus.com/tutorials/bone-based-unity-2d-animation-creating-the-actual-animations--cms-21366

    翻译词数:1800

    图片13.png (73.27 KB, 下载次数: 12)

    图片13.png

    图片12.png (76.1 KB, 下载次数: 8)

    图片12.png

  • 相关阅读:
    IoC~MVC3+EF+Autofac实现松耦合的系统架构
    IoC~高效的Autofac
    Autofac 依赖注入框架 使用
    C# socket编程实践——支持广播的简单socket服务器
    简单理解Socket
    利用html 5 websocket做个山寨版web聊天室(手写C#服务器)
    c# 实现WebSocket
    oracle中clob字段的使用
    查找程序加载的动态库的路径
    wordpress在window下完美实现301重定向的方法
  • 原文地址:https://www.cnblogs.com/nafio/p/9137520.html
Copyright © 2020-2023  润新知