Unity 从零开始的2D游戏开发 —— [Animator] 使用动画状态机制作简单动画

       动画是一个2D游戏里面必不可少的一部分,使用动画可以实现很多意想不到的功能,除了常规的人物动画,还可以实现一些周期性的运动。接下来会尝试实现一个非帧动画,一个帧动画。


一、非帧动画:通过改变位置或拉伸实现的简单动画

非帧动画一般用于制作人物的移动,以及其他的简单动画,是通过周期的改变物体位置或者拉伸的动画,这种动画需要人物的每部分是分开来组装的,简单的可分为四肢身体和头,复杂的连脚指头都会分开。分开之后通过改变位置或拉伸某个部位,利用Unity自带功能,只要我们设定好一个部位的起点和终点,动画机会帮我们自动模拟出这一过程,实现一个简单的动画。

先在坐标“Add Property”加入想要控制的变量,如果要控制拉伸,那就把Scale加入进来,如果是位置就把Position加入进来,这里我用的是Scale来示例。

之后在时间轴选定时间,改变物体的Scale之后,点击时间轴左边的红框内的按钮,把改动加入到动画里。然后点击左上角的小黑三角形,就可以在scene界面预览到动画的效果了。注意一定要先选时间轴再调整物体的位置大小,否则会改变原来物体的位置。

 


 

二、帧动画:通过改变Sprite的动画

       帧动画可以用来制作一些复杂的动画,比如人物的攻击动画之类的。帧动画不需要人物部位是分开的,可以通过直接修改整体的造型来改变人物的动画,不过帧动画耗费的美术资源较多,比较一个动画少则需要几帧,多则十几帧原画,耗费的资源非常巨大。不过帧动画也常被用来制作一些非人的动画,比如像史莱姆啊这种用普通的改变位置拉伸很难表现出来,但是用帧动画可以画出来比较简单。

帧动画的制作也非常简单,只需要将图片资源从资源管理器直接拖到时间轴对应位置就可以了。

不过帧动画的制作还有另一种方法,因为一般只是修改Sprite就够了,所以也可以用代码来制作帧动画。

 

IEnumerator TestForBlog_Zhidai()
    {
        while(true)
        {
            yield return new WaitForSeconds(0.2f);

            sr.sprite = newsprite;

            yield return new WaitForSeconds(0.2f);

            sr.sprite = oldsprite;

        }
        yield return 0;
        
    }

这里使用一个协程来制作一个0.4s无限循环的帧动画,通过改变SpriteRenderer的Sprite属性来制作动画。

    StartCoroutine("TestForBlog_Zhidai");
    StopCoroutine("TestForBlog_Zhidai");

然后可以用以上第一行代码启动协程启动动画,用第二行代码结束协程退出动画。

这样一个用代码制作的简单帧动画就完成了,不过因为代码制作的帧动画并不能接受动画机的一些参数设置,所以一般用第一种方式来制作,说到动画机,下面就要介绍动画机的基本用法。


三、动画机的基本用法和界面介绍

这里创建了两个动画walk、Slim,但是除了这两个动画之外还有3个,下面就简单说一下这三个的功能

(1)Any State:任意动画,即该层动画里任意的一个动画

(2)Entry:入口,可等同于main函数,是一个动画机的入口,与之连接的是默认动画

(3)Exit:退出,退出该层动画机,可等同于函数中的return

了解了以上三个之后,就大致明白了动画机的基本组成,我们先右键把Slim设置为默认动画,即动画机的入口,一般是一个空动画,然后右键点击Make Transition设置一个传递到walk,这代表着可以从默认动画转移到walk动画,然后从walk也设置一个传递到默认动画。

到这里如果我们什么都不做运行的话,就可以看见两个动画互相转换,这是因为我们没有设置转移条件,我们先点击右上角的+号,添加一个控制变量进来,变量为bool类型,命名为isMoving,逻辑上,当isMoving为真时,应该从默认动画转移为walk动画,为假时反之。

为了实现这种功能,点击从Slim->walk的箭头,会出现如上界面,然后点击红框里的+号添加转移条件,把isMoving添加进来,设置为true,同样的,另一个箭头,把isMoving添加进去,设置为假,这样两个箭头的转移条件就都设置完毕了。

这样一个简单的动画机就设置完毕了,之后我们只需要在代码中控制变量的值就可以实现动画的切换了。

if (rig.velocity.x != 0)
        {
            animator.SetBool("isMoving", true);
        }
        else
        {
            animator.SetBool("isMoving", false);
        }

在这里检测刚体的速度是否为0来反映目标是不是在移动,获取物体的animator组件,通过set参数来控制变量,最后控制动画的转移。

在动画机中除了bool还有float,int以及trigger,trigger是一个触发器,经常用来控制攻击的动画,一旦触发,他会执行一次动画之后重新置假。


本篇到此为止,动画机是unity的难点之一,除了要了解动画机的基本操作,还得使用代码进行控制,本篇博客旨在入门2D动画的基础,动画机还有很多设置可供大家了解和学习。

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Unity3D/2D游戏开发从0到1》是一本介绍如何使用Unity3D或2D引擎从基础开始进行游戏开发的电子书。该书的目标是帮助读者掌握游戏开发的核心概念和技术,并从零开始构建自己的第一个游戏。 这本书的内容非常系统和全面。首先,它介绍了Unity3D/2D引擎的基础知识,包括界面布局、场景编辑、对象操作等。通过这些基础知识的学习,读者可以对游戏引擎有一个全面的了解。 接下来,这本书详细介绍了游戏开发的核心组件,包括游戏物体、碰撞体、刚体等。读者将学习如何创建和控制游戏中的各种物体,并了解它们之间的交互原理。 此外,书中还介绍了游戏脚本编程的基础知识。通过学习脚本编程,读者可以使用C#语言编写自己的游戏逻辑和交互功能。这将使他们能够自定义游戏行为和创造独特的游戏体验。 除了基础知识和技术,这本书还包含了一些实际的项目案例,供读者学习和实践。通过这些案例,读者可以逐步熟悉游戏开发的工作流程和技巧,培养自己的开发能力。 总的来说,《Unity3D/2D游戏开发从0到1》是一本非常适合初学者的游戏开发指南。它提供了全面而系统的学习路径,帮助读者从零开始掌握游戏开发的基础知识和技术,并能够独立完成自己的第一个游戏项目。无论是对于编程新手还是对游戏制作感兴趣的爱好者来说,这本书都是一个很好的入门选择。 ### 回答2: 《Unity3D/2D游戏开发从0到1.pdf》是一本介绍Unity3D/2D游戏开发的教程书籍。本书内容包括:Unity3D/2D游戏引擎的基本原理介绍、开发环境的搭建、基础知识的学习,以及具体的游戏开发案例等。 首先,本书的内容将对Unity3D/2D游戏引擎进行全面的介绍,包括其概念、功能和特点等。读者将能够了解到Unity3D/2D的核心概念,以及如何利用其强大的功能来开发游戏。 其次,本书将帮助读者搭建一个完整的Unity3D/2D游戏开发环境。通过详细的步骤和示例,读者将学习到如何配置Unity3D/2D开发环境,并进行必要的设置和优化,以便能够高效地进行游戏开发。 接着,本书将介绍Unity3D/2D游戏开发的基础知识。包括游戏对象的创建和管理、场景的设计和构建、材质和纹理的应用、光照和阴影的设置等等。通过学习这些基础知识,读者将能够掌握Unity3D/2D游戏开发的基本技能。 最后,本书还提供了一些具体的游戏开发案例,包括平台跳跃游戏、角色扮演游戏和益智游戏等。这些案例将以实际的项目为例,展示如何使用Unity3D/2D进行游戏开发,并给予读者实践和锻炼的机会。 总的来说,《Unity3D/2D游戏开发从0到1.pdf》是一本系统而且全面的Unity3D/2D游戏开发教程,适合初学者快速入门和提高。通过学习本书,读者可以掌握Unity3D/2D游戏开发的基本原理和技巧,为日后的游戏开发工作打下坚实的基础。 ### 回答3: 《Unity3D/2D游戏开发从0到1》是一本介绍使用Unity引擎进行游戏开发的书籍。本书旨在帮助读者从零基础开始,逐步掌握Unity游戏开发的基础知识和技巧,从而能够自己独立开发游戏。 这本书的内容非常全面,包括了Unity引擎的基础概念、场景管理、资源管理、游戏对象的创建与编辑、物理引擎和碰撞检测等方面的知识点。同时,书中还介绍了使用C#脚本编写游戏逻辑和UI界面设计的方法,以及导出游戏到多平台的技巧。 此外,《Unity3D/2D游戏开发从0到1》还提供了一些实例项目,供读者参考和练习。通过这些实例,读者可以逐步了解和掌握游戏开发的流程和技巧。同时,书中也包含了一些常见问题的解答和调优建议,帮助读者在开发过程中避免一些常见的错误和困惑。 总的来说,《Unity3D/2D游戏开发从0到1》是一本适合初学者入门的书籍,通过学习这本书,读者可以系统地了解Unity引擎的使用游戏开发的基本原理,从而能够开始自己的游戏开发之旅。无论是对于想要转行从事游戏开发的人还是对于爱好游戏的人来说,这本书都是一本必备的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值