如何确定墙面物体的哪一侧放置?

时间:2015-02-16 14:57:51

标签: c# unity3d

我似乎无法弄清楚如何检测墙体对象的哪一侧。

当z轴为正时,它在两种情况下(左侧壁和底壁)都能正常工作

Image of the situation

但是当物体被放置在右侧墙壁或顶壁上时,z轴值应该是负的,因为它在房间里,这是我无法弄清楚的。如何确定物体在墙的哪一侧?

Image of the situation

这是我用来放置对象的代码

private void placeObjectToWall(GameObject obj){
        GameObject wall = getRandomGameObject (walls);
        obj.transform.parent = wall.transform;
        float forward = 0;
        if(wall.transform.rotation.y%180!=0){
            forward = obj.transform.localScale.x/2;
        }else{
            forward = obj.transform.localScale.z/2;
        }
        obj.transform.localPosition = new Vector3(0,0,forward);
}

1 个答案:

答案 0 :(得分:0)

为了确定左侧或右侧的侧面,您可以从对象的中心到右侧墙的中心和从对象中心到左侧中心的其他Vector3制作Vector3。

如果这些Vector3具有相同的方向,则该对象位于墙外,但如果它们的方向不同,则该对象位于墙内。

为了确定从侧面到天花板和地板的墙壁,您可以使用这些墙壁做同样的结论。

在这里,您可以在图像上使用这些矢量表示。

enter image description here

enter image description here

请注意,当我说“同一方向”时,我的意思是这些向量既是正面的,也不是负面的,而不是相同的。