Unity 为瓦片地图添加碰撞检测

2022年5月5日 7025点热度 3人点赞 0条评论

前言

游戏地图上会有障碍物和地图边界这种设置,它们需要与游戏角色产生碰撞。跟精灵一样,需要添加collide和Rigidbody组件。

地图分层

在设置障碍物的时候,最好是将地图背景放到一个单独的Tilemap中,然后在将障碍物单独放入一个Tilemap。因为在添加collide组件时是为整个Tilemap添加。

当Tilemap有多层时,需要注意它们的渲染顺序,最好是通过调整Tilemap Renderer 中的order in Layer 属性,来决定地图的渲染顺序,值越小即越先被渲染,即值越小的地图会被后面渲染的地图覆盖在下面。

Tilemap_renderer

这里我将地图背景和障碍物分为了两层:

TileMap9

TileMap10

将障碍物图层的order in layer属性设置为1,这样它就可以显示在背景的上方了。

TileMap11

为Tilemap添加Collide

在Tilemap的Inspector Window中点击Add Component ,添加两个组件:

  1. Tilemap Collider 2d
  2. Composite Collider 2d

Tilemap Collider 2d会为每一个瓦片添加一个碰撞包围盒,用于碰撞检测时使用。但是如果图层上有过多的瓦片,会很耗费性能。所以需要使用Composite Collider 2d合并瓦片上的包围盒,它可以将紧挨着的两个瓦片的包围盒合并成一个,这样可以大大的减少碰撞带来的性能消耗。

在添加Composite Collider 2d时会自动添加一个Rigidbody 2d组件,这个组件也是为了实现碰撞,详情可参考碰撞检测的简单使用

注意:使用Composite Collider 2d组件,需要在Collider 2d组件上勾选use Composite,否则合并不会生效

大脸猫

这个人虽然很勤快,但什么也没有留下!

文章评论