2D Game Creation - Tilemap and 2D Cinemachine

版权声明: https://blog.csdn.net/Ha1f_Awake/article/details/83473960

主要内容

在了解Tilemap之前先要了解五个相关概念:Sprite,Tile,Tile Palette,Brush和Grid。

1. Pipeline(管道) and Terrain(地形) Tiles

2. Animated(动画) Tiles

3. Random(随机)Tiles


 

Tilemap(瓦片地图)可以帮助我们快速设计一个关卡。

在了解Tilemap之前先要了解五个相关概念:SpriteTileTile PaletteBrushGrid

Tile(瓦片),它包含着属性Sprite(精灵)Color(颜色)Collider Type(碰撞体类型)

Brush(画刷)Tile刷在Tilemap上相当于在画布上涂色,而这个颜色包含着画面内容。在涂色之前,我们一般先将颜色刷在调色板上,观察或调试颜色,刷Tile也一样,要先把它们放入Tile Palette(调色板)中。

*需要注意的是,Tile可以通过Tile Palette生成——将需要的若干Sprite拖动到Tile Palette中,然后在Assets文件夹里新建一个文件夹用以保存Tiles资源。当然我们也可以通过Assets/ Creat/ Tile来创建,但同样需要新建一个文件夹来保存。

Brushs工具并不是在一个单独的窗口,它们显示在Tile Palette窗口中。

有关Tile的操作只能在Tilemap上进行。创建Tilemap——GameObject/ 2D Object/ TilemapTilemap创建成功时,Hierarchy窗口上会自动生成对象Grid(网格),而Tilemap作为Grid的子对象生成。

想利用Tilemap设计地图关卡,我们还要在上面添加两个组件,Tilemap Collider 2DComposite Collider 2D

Tilemap Collider 2D会在整个Tilemap上添加碰撞体,使之能与主角发生接触,但这并不符合我们的游戏需求,因而我们还要添加Composite Collider 2D,只在含有Tile的网格上添加碰撞体。添加Composite Collider 2D后物体会自动添加Rigidbody 2D,使物体成为一个物理对象。

Tilemap Collider 2DRigidbody 2D上做相应的设置后,Tilemap就可以作为正常地图使用了。

*Tilemap一样适用于3D游戏,只是在对象Grid子对象Tilemap的组件中作相应的设置。

  


 

Rule Tile(规则瓦片)可以让我们更快地一键拖动生成地图。

*要使用Rule Tile,首先得在资源文件夹中导入插件2D-Extras

(下载地址:https://github.com/Unity-Technologies/2d-extras

创建方式——Assets/ Creat/ Rule Tile

1. Pipeline(管道) and Terrain(地形) Tiles

属性Output设置为Single,九宫格中的箭头表示瓦片的该侧可以有其他瓦片,叉叉表示没有。虽然设置规则比较繁琐,但用上的时候真的非常方便!磨刀不误砍柴工嘛~

2. Animated(动画) Tiles

属性Output设置为Animation,设置后规则属性栏会增加SpeedSize。九宫格中的前头表示瓦片的移动方向,很容易理解,Speed表示移动的速度,而Size则表示在动画中有多少个瓦片参与。

如果想一次性调整多个瓦片的Speed,可以直接在Tilemap上的组件设置数值。

*有时候我们会遇到若干种瓦片需要在Grid中的同一个网格显示的情况,这时候我们就要在Grid下添加一个新的Tilemap,然后在Tile Palette上选择“作画”的瓦片地图,再刷上新的Tile

3. Random(随机)Tiles

属性Output设置为Random,设置后会自动添加两个新属性,NoiseSizeNoise的属性值默认为0.5,而且不方便直接设置,一般情况不用调整。SizeAnimated Tiles的道理相同,表示参与随机抽取的瓦片的数量。

*除了Rule Tile,插件2D-Extras还给了我们其他类型的Brushs,至于这些画刷能用出什么样的效果,这里就不一一说明了。


 

Cinemachine(自动推拉相机)可以帮助我们轻松管理相机,实现更好的镜头移动。

创建途径——Component/ Cinemachine/ Creat 2D Camera

将需要镜头跟随的对象拖入Follow框中,Main Camera(主摄像机)就会聚焦在物体上。

我们可以发现,物体移动了一定距离时镜头才会跟随着平滑地移动,这与CameraDead Zone有关。

需要注意的是,在大多数闯关游戏中,镜头并不是一直跟随着主角就可以了。有时候主角会掉落到我们想要的场景之外,如果在这种情况下镜头还一直跟随着,这就不符合我们想要的效果了。

因此我们需要用到CameraExtension组件——Cinemachine ConfinerConfine的中文意思是界限,很容易理解。该组件需要一个Collider 2D的引用来告诉它,它可以移动的范围在哪,所以我们只需要给场景背景添加一个碰撞体,再将背景对象拖入引用框中即可。

还需要注意的是,碰撞体要勾选Is Trigger属性,不然游戏开始时主角会被弹到碰撞体之外。


2D to 3D By Camera 利用相机在2D游戏中实现3D效果。

主摄像机的组件Camera中有一项名为Target Texture的引用。

当我们在这(Target Texture)添加一个(新建的)Render Texture时,可以看到Render Texture的内容从左图变为右图,原因是主摄像机原先拍摄的内容被它给包含了

  →  

与此同时,主摄像机不再对游戏视图进行渲染。

因此我们需要添加一个新的摄像机。此时我们可以不让新摄像机继续拍摄游戏场景,而是通过另一种方式来显示游戏视图

首先,在Camera下建立一个3D Object,比如示例中的Cylinder(圆柱体),并调整两者之间的位置。

然后新建一种Material(命名为Cylinder)。由于从2D转为3D不需要考虑光照的影响,所以要将属性Shader设置为Unlit/ Texture。再把刚才的Render Texture拖入红色箭头所指的框框。

最后将材质拖到3D Object(Cylinder)中就大功告成了!


路过的圈毛君:“给美工(艺术生)的建议,多观察别人的地图或关卡,在清楚自己的作品能起怎样的作用后,体会那种设计的思路,并尝试设计地图。”

举两个栗子_(:з」∠)_

猜你喜欢

转载自blog.csdn.net/Ha1f_Awake/article/details/83473960
2D