Unity强化篇(七) —— Unity Sprite Shapes简介(一)

版本记录

版本号 时间
V1.0 2019.11.12 星期二

前言

Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至WindowsMacWiiiPhoneWebGL(需要HTML5)、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Mac 所支持。网页游戏 坦克英雄和手机游戏王者荣耀都是基于它的开发。感兴趣的看下面几篇文章。
1. Unity强化篇(一) —— 如何使用Vuforia制作AR游戏(一)
2. Unity强化篇(二) —— 适用于Unity的HTC Vive教程(一)
3. Unity强化篇(三) —— 适用于Unity的HTC Vive教程(二)
4. Unity强化篇(四) —— Unity 和 Ethereum(一)
5. Unity强化篇(五) —— Unity 和 Ethereum(二)
6. Unity强化篇(六) —— 使用Unity和Photon进行多人游戏简介(一)

开始

题外话:徐S,最近总梦见你,我家里下大雪❄️了,第一场雪,不能带你回去看了~~

首先看下主要内容

使用Unity Sprite Shapes,制作2D环境从未如此简单。 最重要的是,您只需要几个sprite就可以开始使用!

接着看下写作环境

C# 7.3, Unity 2019.1, Unity

2D游戏一直很有趣,但是由于需要的所有资源,制作2D游戏很快就会变得不知所措。使用Unity的Sprite Shapes,制作2D环境从未如此简单。最重要的是,您只需要几个sprite就可以开始!

Sprite Shape是包含指定给特定角度的sprites的资源。在场景(scene)中时,Sprite Shape将沿其路径平铺指定的精灵(sprites)。它会根据其设置使将显示的精灵变形。这使您可以使用简单的工具和设置来创建复杂的几何图形。

在本教程中,您将使用Sprite Shapes制作游戏。在此过程中,您将学习以下关键组成部分:

  • 创建和修改Sprite Shape
  • 根据方向更改Sprite Shape
  • 使用Sprite Shape样条曲线工具更改其形状。
  • 为您的Sprite Shape添加变量。
  • 生成封闭式和开放式Sprite Shape
  • 将碰撞体应用于Sprite Shapes

您需要在计算机上安装Unity 2019.1(或更高版本)的副本才能继续进行。

有了Unity之后,打开Introduction to Sprite Shapes Starterr项目。 加载项目后,使用Project窗口打开RW文件夹,然后观察文件夹结构:

分别包含以下内容:

  • Animations:包含敌人和玩家的所有动画和动画控制器。
  • Physics Materials:包含用于播放器的高摩擦物理材料。
  • Prefabs:当前包含玩家,敌人和旗帜。
  • Scenes:包含主要的游戏场景。
  • Scripts:包含播放器,摄像机,SFX和游戏管理所需的所有脚本。
  • Sounds:包含游戏中使用的所有声音。
  • Sprite Shapes:当前是一个空文件夹,您将在其中创建新的Sprite Shapes
  • Sprites:包含玩家,敌人和环境的所有预制精灵。

在开始使用Sprite Shapes之前,必须从Package Manager中安装它。 为此,请从顶部菜单中选择Window ► Package Manager

Package Manager中,选择Advanced ► Show preview packages并安装2D SpriteShape程序包。

Scenes文件夹中打开MainScene,然后查看Game view。 您将看到一个空的蓝天,将充满美丽的Sprite Shapes


Creating the Sprite Shape Profile

Sprite Shape Profile是用于配置特定形状类型的所有选项的资源。 在此资源中,您将分配要使用的精灵,并告诉Sprite Shape如何渲染它们。

首先,您将创建所有不同的Sprite Shape Profile,然后进入场景并将其添加到场景中。

要创建Sprite Shape Profile,请导航至Sprite Shapes文件夹,然后选择Assets ► Create ► Sprite Shape Profile ► Open Shape。 将配置文件命名为Platform

选择Platform Sprite Shape并查看Inspector; 在这里,您可以更改配置文件的所有设置。 在开始使用这些设置之前,这里是最重要的设置:

在本教程中,这些是您将要更改的设置:

  • Fill Texture:在封闭的形状上,Unity将平铺该纹理以填充形状的内部。
  • Currently Selected Angle Range:使用旋转滑块,您可以选择不同的角度范围,这样做将允许您修改该角度范围的设置。
  • Sprite Preview:这将预览分配给该角度范围的第一个sprite
  • Possible Sprites in Angle Range:允许您将多个sprites分配到一个角度范围,以进行变化。 您将在本教程的后面部分对此进行详细介绍。
  • 角精灵:这允许您为每个角分配sprites

很高兴知道理论上的一切,但是现在该为您的游戏创建一个平台了!


Setting up the Platform Sprite Shape

Sprite Shapes包括两种主要类型:

  • Close Ended:形状的线段或曲线都已连接,这使Sprite Shape使用填充纹理。 圆形和正方形是Close Ended的,因为它们没有松散的末端。
  • Open Ended:形状实际上是一条线,用作将小块平铺sprites的路径。 这种类型的Sprite Shape不允许填充纹理。
    平台为开放式形状; 现在您可以开始填写空的“精灵形状轮廓”资产。

1. Setting up an Angle Range

考虑到该platform是开放式(open-ended)Sprite Shape Profile,不需要多个角度范围。 Sprite Shape只需要一个角度范围。

当您将Sprite分配到某个角度范围时,Sprite将自动旋转以适合当前角度,因此,在创建Sprite时无需手动定向。

选择您的Platform配置文件,并注意已经为您创建了一个角度范围,范围从180-180度,基本上覆盖了整个圆。

要将Sprite附加到角度范围,请选择Sprites下的+按钮,然后选择Platform Blank Sprite资源。

这就是您需要在平台配置文件上完成的所有工作;但是,您可能会注意到,平台在sprite预览中分为多个部分。 要获得连续的长条,您需要编辑sprite,但不要担心Sprite编辑器会在这里提供帮助。

2. Editing Sprite Borders

为此,请在RW / Sprites / Other中选择Platform Blank.png,然后在检查器中选择Sprite Editor按钮以调出Sprite编辑器。

sprite周围的绿色控制点将是Sprite编辑器中的主要部分。 通过使用边框,您可以告诉Sprite Shape应该平铺精灵的哪个部分,以及要用作边框精灵(border sprites)的部分;边框精灵只会在路径的起点和终点渲染。

调整边框以确保仅将精灵的中间部分平铺。 按Apply按钮保存您的调整。

RW/Sprites/Other中的Platform Flowers.png重复这个过程,并将Platform Flowers附加到Platform配置文件的当前角度范围内。

添加两个sprites到一个角度范围的原因是添加一些变化,而不必为每个精灵sprites创建多个Sprite Shape配置文件。


Creating Decorations with Sprite Shape

Sprite Shape可以用许多创造性的方式来减少工作量,并在你的精灵sprites中创造变化。在这种情况下,您将创建一个包含树的Sprite Shape,这些树可以平铺在您的地面上,充当一些愉快的背景。

这个Sprite Shape的配置文件与Platform非常相似,所以使用Control+D(或Command+D)复制Platform配置文件,并将其重命名为Tree Decorations

编辑Tree Decorations配置文件,用RW/ sprites /Other/Tree Decorations.png中的新精灵替换当前的两个精灵,并添加第三个精灵。

按如下顺序分配sprites:

sprite为空的原因是在Scene视图中使用Sprite Shape时要留出间隙。

现在,您已经创建了一个平台platform,当玩家离开地面时,你的玩家可以跳转到该平台。 您还添加了装饰以使场景看起来不错。 等一下! 您还没有地面。 你为什么接下来不做呢?


Creating a Ground Sprite Shape

该过程类似于创建平台(platform)。 但是,这一次,您将使用多个角度范围,填充纹理和角。

首先,在Sprite Shapes文件夹中通过选择Assets ► Create ► Sprite Shape Profile ► Open Shape并将其命名为Ground来创建一个新的Sprite Shape Profile。 也可以使用Closed Shape;但是,您将使用Open Shape来学习如何创建自己的角度范围。 这次,这会有点困难,但会变得更加有趣。

1. Creating Multiple Angle Ranges

要创建多个角度范围,请在四个不同的侧面上选择外环,然后使用StartEnd文本框设置其确切的角度范围。 确切的角度范围如下:

  • 顶部:从45开始,到-45结束。
  • 右:从-45开始到-135结束。
  • 底部:从225开始,到135结束。
  • 左:从135开始到45结束。

注意:以上屏幕截图中带有角度的绿色文本以及单词TOP,LEFT,RIGHTBOTTOM仅作为参考。 它们不会出现在屏幕上。

现在已经设置了角度范围,以与平台形状相同的方式将sprites添加到每个角度范围,但是这次确保在开始添加精灵之前,选择要编辑的正确角度范围。

方便地,每个角度范围都有一个对应的名称(如有必要,请参考上面屏幕截图中的绿色文本),为每个范围附加以下精灵:

注意:您可能想知道为什么所有的Sprite都朝上,这是因为Unity会根据角度自动旋转Sprite,因此希望Sprite朝上。

2. Adding a Fill and Corners

Sprite Shape需要用作Close Ended形状,这意味着它将需要填充纹理。 填充纹理为RW / Sprites / Other / Ground Fill Texture.png,确保将纹理的“环绕模式”(Wrap Mode)设置为“重复”(Repeat)非常重要。

立即执行并应用(Apply)更改。

这告诉Unity,可以平铺纹理并填充纹理。 这对于正确填充形状很重要。 现在,将纹理分配给Sprite Shape profile

通过将以下sprites插入各自的fields中来添加转角纹理:

创建边角和填充仅是将精灵指定给其正确fields的问题。

只要看一下Sprite预览,它看起来就很漂亮! 您可能真的很高兴将它们放到scene,所以有趣的部分来了!


Adding Sprite Shapes to the Scene

通过在层次结构中选择Create ► 2D ► Sprite Shape来创建Sprite Shape。 命名GameObjectGround Object

创建对象后,将Ground profile分配给Sprite Shape Controller组件内Profile字段中的Ground Object。 要获得与下面的屏幕截图相对应的视图,您需要单击Edit Spline按钮,然后选择将在Scene视图中显示的节点之一。

您可能还需要确保Scene视图处于2D模式。

Sprite Shape Controller中可以找到Ground Object的最重要设置。

Scene视图中的黄点是当前选定的节点。 Sprite Shape Controller中的大多数选项将直接影响此节点。

这是最重要的设置:

  • Edit Spline - 编辑样条线:启用该功能后,您就可以在scene中重新布置,添加和删除样条线上的节点。 要添加新节点,只需在样条线的任意位置单击鼠标左键即可。 要删除节点,请选择它,然后按Delete键。
  • Point Position - 点位置:这是点相对于GameObject的原点的位置。
  • Point Mode - 点模式
    • Linear Mode - 线性模式:在此模式下,不会通过节点形成曲线。
    • Mirrored Mode - 镜像模式:节点现在具有两个镜像切线,可以创建平滑的连接曲线。
    • Non-Mirrored Mode - 非镜像模式:节点有两个未连接的切线,允许完全自由,但是曲线可能不会保持连接。
  • Height - 高度:修改精灵在该节点的高度,创建变化是很有用的。
  • Sprite Variant - 精灵变体:这个精灵选择器允许你在不同的精灵之间切换,你分配给当前的角度范围。
  • Corner - 角落:你可以在DisabledAutomatic之间切换,如果你在配置文件中分配corners,它将在这里显示。然而,corners是有规则的。相邻的两个节点必须是线性点模式( Linear Point Mode),角节点本身必须是线性点模式,角的角度也不能太苛刻。

如果角节点的角度太苛刻,那么分配的corner cap精灵将不适用。

  • Open Ended - 开放式:在开放式和封闭式之间切换。

是时候使用这些工具了!


Creating the Ground Shape Using the Tools

现在您已经使用了一些工具,是时候为您的游戏创建基础了。您将创建如下所示的地面:

每个节点都有一个重要的目的;例如,您可能想知道为什么node 5可能很重要。

要修改节点的位置,请选择节点并更改Sprite Shape Controller中的point position属性。

每个节点的用途和位置如下:

  • 1) 这是角节点;因此,它是一个线性点,位于(X: -2, Y: 0.4)处。
  • 2) 这是一个链接节点;它的唯一目的是满足一个角落的条件。由于node 3是镜像切线节点,因此node 1node 3之间必须有一个线性点,以便在node 1处创建一个角。这个节点是一个线性节点,在(X: -0.8, Y: 0.4)处。
  • 3) 是一个镜像的切线节点,它创建一个轻微的向下曲线。它位于(X: 0.095, Y: 0.4)
  • 4) 另一个镜像切线节点,它从node 3创建一条平滑的曲线。它位于(X: 2, Y: -0.6)处。
  • 5) 是一个链接节点。它是一个线性节点,其位置为(X: 4.13, Y: -0.6)
  • 6) 另一个角落节点。它是一个线性节点,位于(X: 5, Y: -0.6)处。
  • 7) 是一个线性节点。它可以在(X: 5, Y: -2)处找到。
  • 8) 这是另一个角落。你知道它是怎样的——它是一个线性节点,在(X: -2, Y: -2)处。

做得好!你只需设置你的第一个Sprite Shape从一个profile到一个好看的GameObject。是时候在游戏中加入一些角色了。

1. Applying Collisions to Sprite Shape

为了让角色与Sprite Shape互动,它必须有一个对撞机。为此,向Ground Object添加一个Edge Collider 2D。你可能会注意到对撞机并不完全适合Ground Object的形状,但是现在在Sprite Shape Controller中有更多的选项。其中一个选项是offset;使用这个值使对撞机与Ground Object的轮廓相匹配。

一旦你添加了一个Edge Collider 2D,你可以在Sprite Shape Controller中修改更多的选项。

  • Update Collider:当你修改一个Sprite Shape的形状,你想要更新碰撞器,取消选择它,并再次选择它。
  • Detail:修改碰撞器的细节级别;细节越高,碰撞器就越平滑(增加细节可能会降低性能)。
  • Offset:从中心偏移到对撞机的边缘。

注意:一旦你在Sprite Shape Controller中改变了碰撞器选项,你就可以在Edge Collider 2D中使用Edit Collider按钮来手动将碰撞器与Ground Object的形状相匹配。

现在是时候添加你的游戏英雄了!

将玩家PlayerRW/Prefabs拖放到场景中。确保玩家位于摄像机视角的中心,同时也要站在Ground Object上。从层次结构中选择Player GameObject(游戏对象),并将其拖放到主相机Main Camera上的Camera Focus中的Player槽中。

按下播放键,你可以在你的地面上移动和跳跃。如果你不能从这些令人惊叹的艺术中分辨出来,玩家就是一个程序员,他目前正在进行一个编码期间,并且在过去的两天里没有休息过。


Finishing up the Scene

创建一个新的Sprite Shape GameObject,称为Middle Ground Object,并分配Ground profile,将GameObject移动到Ground Object的右边,留下一个小的空隙。

使用前面讨论的工具和技术形成一个五边形,同时在Middle Ground Object上添加一个Edge Collider 2D,这样玩家就可以与之交互。

1. Adding Platforms to the Scene

这个场景现在看起来有点无聊,所以添加一些浮动平台来给它点爱。

创建一个新的Sprite Shape GameObject称为Floating Platform,并附加Platform profile。不像Ground Object,这不是一个封闭的形状,所以在Sprite Shape Controller中打开Open Ended选项。

用于修改Floating Platform的工具与用于Ground Object的工具完全相同。要创建平台,请删除底部的两个节点,只留下一个水平的平台。利用Floating Platform填补两个坚实场地之间的空隙。不要忘记添加一个Edge Collider 2D和调整偏移(offset)以适应碰撞器的sprite

复制Floating Platform,并将其重命名为Floating End Platform;这就是你要放终点flag的地方。

Floating End Platform放在Middle Ground后,让玩家从Middle Ground跳上。

这些是每个节点的位置和类型:

  • 1) 位于(X: -1, Y: 2)的线性节点。
  • 2) 位于(X: 0.45, Y: 2)的非镜像切线节点。
  • 3) 位于(X: 2, Y: 2.8)的非镜像切线节点。
  • 4) 位于(X: 4, Y: 2.8)的线性节点。

这个平台会有点不同。在创建Platform profile期间,您为相同的角度范围分配了两个不同的精灵。要切换每个节点使用的sprite,请选择节点并在sprite variant区域中选择要使用的sprite

将第一个和第三个节点更改为第二个sprite variant,以便在平台中创建一些变体。

按下Play键,玩家应该能够在地图上奔跑和跳跃。如果玩家不能跳到平台上,一定要降低平台离地的高度,使其更容易跳到平台上。这也是检查所有Sprite Shapes是否有碰撞的好时机。

2. Applying Decorations to the Level

一切都很好,但是为了增加场景的趣味性,你需要添加一些背景装饰。添加另一个Sprite Shape GameObject到场景中,并称之为Tree Decorations。确保Sprite ShapeOpen Ended的,它使用Tree Decorations profile

这种Sprite Shape可以平铺在不同的地面和平台上,增加一个愉快的背景。您将三个不同的精灵添加到Tree Decorations profile中。两种类型的树和一个空的精灵,使用sprite index你可以在这些精灵之间切换。

如果variation还不够,还可以使用每个节点的height属性。首先将节点大致与Ground Object的轮廓相匹配。

添加一些节点,并更改sprite index ,以创建更多的变化。

稍微改变一些节点的高度,使其看起来不那么重复。你可能需要调整节点的位置来将sprite放回地面。

重复添加新的Sprite Shape GameObjects的过程,为每个地面和平台添加Tree Decorations profile。完成之后,场景应该是这样的:

你应该感到自豪-根据几个资源就可以创建如此美丽的场景!是时候把所有的东西都和一些很棒的游戏元素联系起来了。

3. Tying up Game Elements

在添加任何敌人之前,通过分组ground objectsplatform objects来清理层次结构。把装饰物做成它们所在的平台或地面的子属,这样如果你移动地面,装饰物也会随之移动。

你可能已经注意到了左上角的计时器;这是为了看看你能多快完成关卡。当你到达终点时,计时器就会停止。要添加完成,将旗子从RW/Prefabs拖到Floating End Platform上。

当你按下播放键,一切正常时,旗子代表着胜利的甜蜜滋味,但你生活在一个并不完美的世界,总会有错误挡住你前进的道路。

将敌人从RW/Prefabs拖到Ground Object。你会看到一条水平的绿线穿过敌人;这是敌人要巡逻的道路。您可以使用Enemy Controller的左点和右点修改此路径。

复制敌人,并策略性地将其放置在场景周围,给自己一个挑战(将敌人聚集在一个空的GameObject游戏对象下,以保持层级组织)。修改敌人的路径以适应它所处的地面。你的场景应该是这样的,所有的敌人:

要想赢,你必须在最后到达终点;如果你碰到一个敌人,你会死,但如果你跳到敌人身上,你可以摧毁它。

Play并控制您的咖啡驱动的程序员成功构建,粉碎您前进道路上的所有错误!

您能比15秒做得更好吗?

如果您想了解有关Sprite Shapes的更多信息,请转到Sprite Shape forum

后记

本篇主要讲述了Unity Sprite Shapes简介,感兴趣的给个赞或者关注~~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容