美文网首页
2020-07-20 2D精灵和动画

2020-07-20 2D精灵和动画

作者: JOJO的冒险奇妙 | 来源:发表于2020-07-20 22:39 被阅读0次

    2020/7/20

    作为unity的初学者,今天我学习了2D开发平台的相关内容

    一、2D精灵介绍

    1、什么是Sprite精灵?

    unity中2D的游戏对象,其实就是对图片进行处理。把图片转换成可以直接用在2D游戏中的格式,转换后的图片称为Sprite(精灵)。为了提高性能,一般美工会将不同的图片拼成一张大图,在unity中将每个图片读取出来作为Sprite使用。

    2、如何创建Sprite精灵

    ①将一张图转成一个精灵

    在Project面板中选中图片,在Inspector面板中修改Texture Type为Sprite(2DandUI),接着修改Sprite Mode 为Single,意为独个精灵,最后点击右下角的Apply应用。

    ②将一张图转成多个精灵

    同上选中图片,修改Textture Type为Sprite(2DandUI),接着修改Sprite Mode 为Multiple,再点击Apply。一张图片转成多个精灵,一般用于将大图切割为若干小图,所有我要点击SpriteEditor打开编辑窗口。

    SpriteEditor编辑窗口菜单

    点击Slice(切割),这里可以修改Type来修改切割方式,这里有三种切割方式,第一种是Automatic,进行自动切割,如果大图中的各个小图位置比较分明,使用自动切割会比较方便。第二种是Grid By Cell Size,意为通过设置单元格大小进行网格切割,第三种是Grid By Cell Count,意为通过设置行列数进行网格切割,后两种比较适合小图排列比较规律切大小相同的情况。当然,还可以手动修改Offset(偏移量)、Padding(边距)、Pivot(中心点位置)等等属性,切割出我们想要的精灵。设定好之后点击Slice,然后点击编辑窗口右上角的Apply。

    ③打包精灵

    同一个精灵,在场景中多次实例化世,只渲染一次,所以为了提高性能,我们可以将多个精灵打包到一张大图上,值得注意的是,打包后的大图并没有实际的图片文件。

    点击Edit->Project Settings->Editor中SpritePacker默认是Disabled(关闭的),需设置成AlwaysEnabled(LegacySpritePacker),然后我们为要打包的精灵设置Packing Tag,记得点击Apply,最后点击Window菜单,找到Sprite Packer并打开,然后点击Pack即可。

    在Sprite Packer的菜单中我们还可以设置打包策略,第一种策略DefaultPackerPolicy是默认打包策略,打包后的大小是2的幂次方,有事会出现大量空间没有被利用。第二种策略TightRotateEnabledSpritePackerPolicy是紧密旋转打包策略,通过旋转减少两个精灵之间的空隙,从而减少图片的大小。第三种是TightPackerPolicy紧密打包策略,在不旋转的情况下,进行紧密打包。

    ④精灵的图层排序

    2D游戏中的图片都是在同一个平面,所以我们要设置图层排序来体现视觉上的前后顺序。在场景中精灵的Sprite Renderer组件,有一个SortingLayer属性,点开后我们可以添加自己需要的图层,越靠下的图层,显示的越前。如果两个精灵属于同一个图层中,我们可以修改另一个属性OrderInLayer来进行排序,OrderInLayer属性的值越大,显示的越前。

    二、2D物理组件

    2D物理引擎和3D物理引擎基本功能相似,常用组件后缀一般有2D来表示是2D组件。

    1.Rigidbody2D组件

    Rigidbody2D

    这里介绍一下组件各个属性的含义

    Body Type:刚体类型,一般都会使用Dynamic(动态的)

    Material:物理材质2D

    Simulated:是否模拟 (模拟包括:运动、Collider2D的碰撞、Joint2D的约束效果、是否驻留在内存)

    Use Auto Mass:是否使用自动质量

    Mass:质量

    Linear Drag:线性阻力大小

    Angular Drag:旋转阻力大小

    Gravity Scale:重力缩放系数

    Collision Detection:碰撞检测,这里可以调节检测的频率

    Sleeping Mode:睡眠模式

    2、Collider2D组件

    和3D一样,2D游戏中也有各种各样的碰撞器,其中比较特别的是polygon collider2D(多边形碰撞器)

    碰撞和触发的回调方法

    OnCollisionEnter2D(Collision2D other):刚进行碰撞时调用

    OnCollisionStay2D(Collision2D other):一直保持碰撞时调用

    OnCollisionExit2D(Collision2D other):碰撞结束时调用

    OnTriggerEnter2D(Collision2D other):刚触发时调用

    OnTriggerStay2D(Collision2D other):一直保持触发时调用

    OnTriggerExit2D(Collision2D other):触发结束时调用

    需要注意的是无论是碰撞还是触发,Stay方法调用需要在碰撞和触发时保持运动

    3、2D场景实现拖拽物体移动

    private void OnMouseDrag()

        {

            float x = Input.mousePosition.x / Screen.width;

            float y = Input.mousePosition.y / Screen.height;

            Vector3 pos = Camera.main.ViewportToWorldPoint(new Vector3(x, y, 0));

            pos.z = 0;

            transform.position = pos;

        }

    三、2D动画

    1、创建动画

    可直接选择要创建动画的精灵,拖拽至场景窗口中,会弹出一下窗口

    创建动画

    文件名就是你要创建的动画的名字,将其保存到需要的位置,创建完成后会生成一个动画片段文件,和一个动画控制器,同时会为精灵添加Animator动画控制器组件。

    2、Animation面板

    点击Window->Animation,打开Animation面板,点击动画片段,可以看到如下图所示:

    Animation面板

    右边表示的是时间轴,一根竖线表示一帧

    左边上方是控制动画播放预览的按钮,红色圆圈是录制按钮,下一行的开头是动画片段名,Samples表示值是每秒播放的帧数,数字越大,动画播放的越快,再往后一个按钮是添加关键帧,AddProperty,是为动画添加属性,包括位移、旋转、缩放等。

    相关文章

      网友评论

          本文标题:2020-07-20 2D精灵和动画

          本文链接:https://www.haomeiwen.com/subject/pgtukktx.html