遇到的问题是:假设有A B C三个刚体,请问该如何设置才能让A B 之间不做碰撞检测,碰到了可以直接穿过去,但同时要求对C物体做碰撞检测呢?这情况要考虑三个刚体在一起的情况。

上面的问题可以通过分层进行设置哪个层可以进行碰撞,哪个层不碰撞即可解决。

在 Unity 3.x 中,我们引入了基于层的碰撞检测。它是让游戏对象 (Game Object) 与另一个绑定到特定层的特定游戏对象 (Game Object) 碰撞的一种方式。

 

与自己的层碰撞的对象。

在上图中,您能看见 6 个游戏对象 (GameObject)(3 个平面、3 个立方体)和右侧的“碰撞矩阵”(Collision Matrix),该矩阵说明哪些对象 (Object) 可以与哪层碰撞。在该示例中,我们将“碰撞矩阵”(Collision Matrix) 设置为仅属于相同层的游戏对象 (GameObject) 可以碰撞。

 

设置游戏对象 (GameObject) 来基于层检测碰撞

    1. 选择游戏对象 (Game Object) 将所属的层

    2. 对每个游戏对象 (Game Object) 重复第 1 步,直到将所有游戏对象 (Game Object) 分配给层。

    3. 通过单击编辑 (Edit) -> 工程设置 (Project Settings) -> 物理 (Physics),打开物理偏好设置面板 (Physics Preference Panel)。

    4. 通过勾选来选择“碰撞矩阵”(Collision Matrix) 上哪些层将与其他层交互。

posted on 2016-08-26 13:59  C#小学徒  阅读(629)  评论(0)    收藏  举报