Unity - 如何线性分离游戏对象的子级?

时间:2017-11-10 22:32:59

标签: unity3d

目标是"扩展"一个给定的模型,以便每个部分能够单独地查看用户,以便用户可以分别与每个对象交互(无需担心他们实际操纵哪个对象)。

那么,如何以线性方式动态分离游戏对象?

线性示例: Linear example

因此在示例中有一个空的游戏对象,它是3个对象的父对象:立方体,球体和胶囊。由于对象是当前编写的,因此用户无法看到所有子对象。

在'扩张'例如,我通过沿同一轴(在这种情况下为x)手动拖动每个子项并将它们在同一轴上线性分离。如何动态地做到这一点?

首先想到的是计算游戏对象拥有的孩子数量,并在父母身上运行一个循环,这将使每个孩子移动的距离越来越大,具体取决于移动的孩子。例如:child_1沿x轴移动3个单位,child_2移动6个单位,child_3 9个单位等等。

这是最好的方法吗?第一直觉说,根据对象占用的大小,这在所有情况下都不会起作用。一个子对象可能比另一个子对象大很多倍。如果是这种情况,最好不是按单位分隔对象,而是将每个子对象移到彼此冲突边界之外?

1 个答案:

答案 0 :(得分:0)

client

1 - 获取子对象的数量

2 - 使用嵌套的for循环来查看子句的边界是否与任何其他子边界相交。

Ex:游戏对象有4个孩子,对象为零,一,二,三。嵌套循环将对象零(0)与对象一(1),0与2,0:3,1:2,1:3,2:3进行比较。通过这种方式,它将每个孩子的collider.bounds与每个其他孩子进行比较,以确保没有任何子对象在触摸。

3 - 如果物体正在接触,它会移动一个物体,直到它不再与它所比较的​​物体相交。例如:0:1移动对象1直到它不再与对象零点碰撞。

注意:* 1f(在'移动')应调整到对象之间所需的间隔距离。

编辑 ::代码不健全,此处未实现错误检查和处理。