【发布时间】:2020-08-20 02:47:58
【问题描述】:
我想让某些对象只与某些统一的瓷砖地图发生碰撞。例如,我有一个玩家,我希望能够更改他的对撞机与之交互的瓦片地图。当他在地面上时,我希望他与水交互并且不能进入水中,但是当我在船上时,我不想与水贴图碰撞,而是与地面贴图碰撞。有没有办法做到这一点?
【问题讨论】:
标签: unity3d
我想让某些对象只与某些统一的瓷砖地图发生碰撞。例如,我有一个玩家,我希望能够更改他的对撞机与之交互的瓦片地图。当他在地面上时,我希望他与水交互并且不能进入水中,但是当我在船上时,我不想与水贴图碰撞,而是与地面贴图碰撞。有没有办法做到这一点?
【问题讨论】:
标签: unity3d
您可以将水和地面分开的瓷砖地图,并通过脚本启用它们的瓷砖地图碰撞器组件。请按照以下步骤在现有脚本中包含此功能,以处理玩家进入船只:
首先,在顶部包含 Unity Tilemap:
using UnityEngine.Tilemaps;
然后声明tilemap collider变量:
[SerializeField] TilemapCollider2D groundCollider = null;
[SerializeField] TilemapCollider2D waterCollider = null;
在玩家上船时调用的方法内部:
groundCollider.enabled = false;
waterCollider.enabled = true;
然后每当玩家离开船时做相反的事情:
groundCollider.enabled = true;
waterCollider.enabled = false;
别忘了将 tilemap collider 组件拖到编辑器中的脚本变量中,一切顺利。
【讨论】: