我们在用Tilemap场景搭建时,常常需要某些Tile具有碰撞的功能,那么我们该怎么实现这个功能呢?
我们先得给Tilemap一个专门的Collider组件,即Tilemap Collider 2D:
然后我们在Tile Palette中找到对应的Tile对象,将需要Collider的瓦片的碰撞体设置为Sprite;
这里本菜设置的None;
然后就响应的瓦片就会有碰撞体了;
这里本菜理解为:
给Tilemap一个Collider后, Tilemap会给palette中设置为允许有碰撞体的精灵一个碰撞体;
我们在运行游戏时,电脑会计算很多碰撞体的碰撞,尤其是我们用Tilemap后,如果每个瓦片都有一个单独的碰撞体要计算,那么会增加很多不必要的运行,因为瓦片中大部分是连续无碰撞体或者连续有碰撞体的,而且每个瓦片碰撞体之间是有微笑间隙的,这些间隙可能会导致某些bug【这让我想起了童年CF生化酒店中的椰子树地下的卡墙bug…】
那么我们可以给Tilemap一个Composite Collider 2D组件,这个组件可以自动组合相邻的瓦片碰撞体:
实现效果如下:
注意,要在Tilemap Collider 2D中将Used by composite选项勾上;