今天我们要看的是unity 2d地面 对碰机,虽然现在以unity3d为主要技术,但是有时候我们还是需要unity2d的。现在我们就以坦克游戏为例来学习unity 2d地面 对碰机

本文包括:

  • 使用多边形2D对撞机建立一个2D游戏地形。
  • 使用Unity的自动sprite检测自动裁剪和按尺寸制作一个sprite

添加地形

这次坦克从屏幕掉落到了遗落战境。我们要添加一个接地体来阻止这种情况的发生。

首先,从“Hierarchy”面板点击“Create -> Sprite”,创建一个空的sprite渲染器,如下图。在Inspector面板中把这个sprite渲染器命名为“Terrain”

                           

接下来,下载下图的terrain.png图片。注意,我特意粗糙地裁剪了这个sprite,边缘有很多的空间。不要着急,Unity会自动修复这个!现在就让我们看看这是如何实现的。把这个文件拖拽到Unity的资源文件夹。

                        

注意:记住在Inspector窗口把这个资源设置成sprite,然后点击“Apply”应用它

              

现在选择“Terrain”sprite渲染器。在Inspector面板的“Sprite”的右侧点击黑色的小点,选择刚才创建的“Terrain” sprite。最后,点击“Add Component -> Physics2D -> Polygon Collider 2D”来给地形sprite渲染器添加一个2D多边形对撞机。

2D多边形对撞机 是对撞机的形式之一,能够自动检测关联的sprite的轮廓,并把它变成游戏中的一个对象。

                   

给地形sprite渲染器添加2D多边形对撞机

如果你已经完成了上述步骤,那么场景窗口中将会出现如下的画面。

               

有些地方还不对
Ack。这还不是我们想要的。2D多遍形对撞机已经检测出了sprite的轮廓,但是尺寸是错的。另外,注意检测出的2D多边形对撞机(绿色网格)是偏离中心的。现在让我们来修复这些问题。
在Asset区域里,选择terrain.png,在Inspector窗口,把“Sprite Mode”设置成“Multiple”,把“Pixels To Units”设置为40,如下图。
这是告诉Unity在地形sprite里是有多个sprite的,实际上这是一个快捷方式,Unity自动裁剪sprite并将其置于中心位置。
把“Pixels To Units”设置为 40 能够解决地形的2D多边形对撞机过大的问题。

注意:不要忘记点击“Apply”按钮。

             

现在,你看到的应该是下图这个样子的:

           

现在,测试一下地形是否能正确的工作。点击 “Play”按钮启动场景。

                    

坦克应该掉在地形上,如下图所示:

            

注意:如果坦克没有完全掉在地形上,那就是sprite对齐的问题。确保坦克的sprite渲染器在坦克GameObject中是正确居中的。点击坦克的‘Tank Body Sprite Renderer”,将其中心设置为0,0,0,如下图:

               

当启动场景的时候,坦克应该正确的检测并着落在地形上。