如何在Unity3d中以不规则形状夹住游戏物体运动

时间:2017-06-05 05:34:05

标签: unity3d position transform collider clamp

我正在使用运行时Gizmo在我的游戏中翻译游戏对象。我需要知道如何以不规则的形状夹住物体运动。

例如:如果形状是Box。

I ca n计算此形状的边界并使用Bounds.max.x,Bounds.min.x,Bounds.max.y,Bounds.min.y,Bounds.max.z,Bounds。 min.z并像这样夹住位置:

Vector3 pos = gameObject.transform.position;

pos.x = Mathf.Clamp(pos.x,Bounds.min.x,Bounds.max.x);

pos.y = Mathf.Clamp(pos.y,Bounds.min.y,Bounds.max.y);

pos.x = Mathf.Clamp(pos.z,Bounds.min.z,Bounds.max.z);

gameObject.transform.position = pos;

这是好的,直到它是一个盒子或一个矩形的形状,因为我可以使用Renderer.Bounds或Collider.Bounds,但是,如果它是这样的不规则形状:

And, I计算Bounds值,它将是不正确的,因为Bounding box / bounds将始终以方形/盒形状计算并且将给出不正确的max和min值,使得gameObject超出形状。

我使用下面的RuntimeGizmo来翻译我的gameObject。 https://github.com/HiddenMonk/Unity3DRuntimeTransformGizmo

P.S。在我的情况下,形状是一个方形和一个L形的房间,通过使用原始立方体作为墙壁。有问题的游戏对象是一件家具。

0 个答案:

没有答案