版本记录
版本号 | 时间 |
---|---|
V1.0 | 2019.11.12 星期二 |
前言
Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、WebGL(需要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
要创建多个角度范围,请在四个不同的侧面上选择外环,然后使用Start
和End
文本框设置其确切的角度范围。 确切的角度范围如下:
- 顶部:从45开始,到-45结束。
- 右:从-45开始到-135结束。
- 底部:从225开始,到135结束。
- 左:从135开始到45结束。
注意:以上屏幕截图中带有角度的绿色文本以及单词
TOP,LEFT,RIGHT
和BOTTOM
仅作为参考。 它们不会出现在屏幕上。
现在已经设置了角度范围,以与平台形状相同的方式将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
。 命名GameObject
为Ground 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 - 角落:你可以在
Disabled
和Automatic
之间切换,如果你在配置文件中分配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 1
和node 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
的形状相匹配。
现在是时候添加你的游戏英雄了!
将玩家Player
从RW/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 Shape
是Open 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 objects
和platform objects
来清理层次结构。把装饰物做成它们所在的平台或地面的子属,这样如果你移动地面,装饰物也会随之移动。
你可能已经注意到了左上角的计时器;这是为了看看你能多快完成关卡。当你到达终点时,计时器就会停止。要添加完成,将旗子从RW/Prefabs
拖到Floating End Platform
上。
当你按下播放键,一切正常时,旗子代表着胜利的甜蜜滋味,但你生活在一个并不完美的世界,总会有错误挡住你前进的道路。
将敌人从RW/Prefabs
拖到Ground Object
。你会看到一条水平的绿线穿过敌人;这是敌人要巡逻的道路。您可以使用Enemy Controller
的左点和右点修改此路径。
复制敌人,并策略性地将其放置在场景周围,给自己一个挑战(将敌人聚集在一个空的GameObject
游戏对象下,以保持层级组织)。修改敌人的路径以适应它所处的地面。你的场景应该是这样的,所有的敌人:
要想赢,你必须在最后到达终点;如果你碰到一个敌人,你会死,但如果你跳到敌人身上,你可以摧毁它。
按Play
并控制您的咖啡驱动的程序员成功构建,粉碎您前进道路上的所有错误!
您能比15秒做得更好吗?
如果您想了解有关Sprite Shapes
的更多信息,请转到Sprite Shape forum。
后记
本篇主要讲述了Unity Sprite Shapes简介,感兴趣的给个赞或者关注~~~