unity 2d地面对碰机
虽然如今 Unity 3D 是主流技术,但在某些情况下,我们仍会用到 Unity 2D。本文将以坦克游戏为例,详细介绍如何使用 Unity 2D 地面对碰机。
本文涵盖内容
- 使用多边形 2D 对撞机建立一个 2D 游戏地形。
- 使用 Unity 的自动 sprite 检测自动裁剪和按尺寸制作一个 sprite。
- 添加地形。
添加地形
在之前的测试中,坦克从屏幕掉落到了遗落战境,为了阻止这种情况发生,我们需要添加一个接地体。具体步骤如下:
- 从“Hierarchy”面板点击“Create -> Sprite”,创建一个空的 sprite 渲染器。然后在 Inspector 面板中将这个 sprite 渲染器命名为“Terrain”。
- 下载
terrain.png图片(注意,这张图片我特意进行了粗糙裁剪,边缘有很多空白空间,但不用担心,Unity 会自动修复)。将该文件拖拽到 Unity 的资源文件夹。 - 在 Inspector 窗口把这个资源设置成 sprite,然后点击“Apply”应用设置。
- 选择“Terrain”sprite 渲染器,在 Inspector 面板的“Sprite”右侧点击黑色小点,选择刚才创建的“Terrain”sprite。
- 点击“Add Component -> Physics2D -> Polygon Collider 2D”,为地形 sprite 渲染器添加一个 2D 多边形对撞机。
2D 多边形对撞机是对撞机的一种形式,它能够自动检测关联 sprite 的轮廓,并将其转化为游戏中的一个对象。
修复 2D 多边形对撞机问题
完成上述步骤后,场景窗口可能会出现一些问题。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。再次启动场景时,坦克应该能正确检测并着落在地形上。