在跟着做小狐狸项目的时候,发现瓦片地图添加碰撞体还是十分值得注意的,特意写一篇文章记录一下
添加完瓦片地图后,为了在2d游戏中人物能在地图上站住,我们就需要为地图添加碰撞体。注意,碰撞体是添加在我们需要与人物产生物理效果的某一层的瓦片地图上的
步骤1:添加TilemapCollider2D组件
添加后的效果如图所示:
其实这样只添加一个TilemapCollider2D组件就能让人物站在地图上面,不会跌落了。但是它是根据一个个网格来进行识别碰撞的,容易出现bug,比如让人物掉入缝隙出不来的情况。
为了让地图的物理效果更加真实可靠,我们进行步骤2
步骤2:勾选瓦片地图的TilemapCollider2D组件的Used By Composite
勾选完Used By Composite,它会出现一个警告,如下图
根据警告内容,我们可以得知还需要为这个瓦片地图添加 Rigidbody2D 和 CompositeCollider2D 两个组件
我们先添加 CompositeCollider2D 组件,与此同时,Unity会自动将 Rigidbody2D 组件自动添加进来,这样警告就消失了
!注意:Rigidbody2D 组件需要将 Body Type 选择为 Kinematic 模式。这样可以固定住地图不被玩家创飞了,而且Kinematic2D刚体在碰撞期间的行为类似于不可移动的对象
详细说明链接:007-Unity中的Static、Dynamic、Kinematic_unity kinematic-CSDN博客
具体效果如下:
步骤2的作用就是将整个瓦片地图作为整体进行碰撞识别,减少bug和性能消耗(不确定会不会真的减少,但是我的理解是会减少性能消耗的,有误还请指出
好了,这样就完成了瓦片地图的碰撞体添加