给Tilemap添加2D 碰撞器组件
2024-03-08 本文已影响0人
我阿郑
1、添加Tilemap Collider 2D 组件
![](https://img.haomeiwen.com/i2470124/e8339a0ec733a66f.png)
Tilemap上所有的格子都添加上碰撞器了,但是我们只是想让一些固定的物体添加碰撞器,比如只想让河添加碰撞器。
![](https://img.haomeiwen.com/i2470124/aa042fbd0b29fc05.png)
![](https://img.haomeiwen.com/i2470124/87ef315a0c0ed6db.png)
- 找到Tiles 文件夹,选中所有除了河的Tile资源
- 选中后修改它们的Collider Type, 从 Sprite 改为None, 这样这些瓦片就不会产生碰撞器组件了
这时我们的Tilemap中除了河之外的瓦片,就没有碰撞器组件了
![](https://img.haomeiwen.com/i2470124/687d8718083b04ee.png)
下面需要对河这部分碰撞器做一个优化:
河这些碰撞器都是一个一个格子的,它是以tile瓦片为单位去添加碰撞器的,这样虽然没问题。但是从性能角度考虑不太好
。
-
因为这里会使用Unity物理系统,使用物理系统就会涉及到物理计算,碰撞器越多,物理计算消耗的性能就越大。如果场景很大时,计算量就更大了,游戏的运行速度就会变慢,可能导致卡顿。
-
还有一个问题是,如此多的小格子碰撞器,我们的Ruby与碰撞器发生碰撞时,可能卡到某个缝隙中。
为了优化上述两个问题
,Unity提供一种方式可以把每个瓦片上单独的碰撞器,组织在一起变成一个大的碰撞器
,我们只需要在Tilemap节点上添加一个 Composite Collider 2D
组件。
![](https://img.haomeiwen.com/i2470124/d2781a756d37f130.png)
我们发现,当我们的Tilemap添加了一个 Composite Collider 2D 组件后,会自动挂上一个 Rigidbody 2D这样一个刚体组件:
![](https://img.haomeiwen.com/i2470124/13c468fd79d958de.png)
不想让它们受力移动,改为Static
。接着,勾选上Tilemap Collider 2D中的 Used By Composite
选项:
![](https://img.haomeiwen.com/i2470124/d3be3c0261c8cdff.png)
这时,就会变成一个整体的大的碰撞器