2017-08-04 47 views
0

我有一个由许多其他模型组成的3d房屋的数据集。房屋非常多样化。我试图找到一种方法来使用脚本将房屋拍摄到地形。这种脚本类型的作品,问题是,即使在调整枢轴之后,模型仍然嵌入地形内。我该如何修复它,以便一旦对齐的物体坐在地形的顶部而不是它的内部?将房屋模型统一拍摄到地面

public class AlignInEditor : MonoBehaviour 
{ 
    public bool align = false; 
    public bool showLineToSurface = false; 

    void Update() 
    { 
     if (align) 
     { 
      RaycastHit hit; 
      Ray ray = new Ray (transform.position, Vector3.down); 
      if (Physics.Raycast(ray, out hit)) 
      { 
       transform.position = hit.point; 
       Debug.Log (transform.name + " aligned."); 
      } 
      else 
      { 
       Debug.Log ("No surface found for " + transform.name); 
      } 
      align = false; 
     } 

     if (showLineToSurface) 
     { 
      RaycastHit hit; 
      Ray ray = new Ray (transform.position, Vector3.down); 
      if (Physics.Raycast(ray, out hit)) 
      { 
       Debug.DrawLine (transform.position, hit.point); 
      } 
     } 
    } 
} 

House embedded in terrain

+0

从重复问题的答案中查看#3。 – Programmer

+0

这些问题是不一样的。它们相关,但不同。 – luii

+0

这两个问题都在问如何在地形上放置一个物体。如果我复制该解决方案并将其发布到此处,它将起作用,但为什么我应该在之前得到回答时执行此操作? – Programmer

回答

0

蒙上了光线投射形成的房子到地面中心找到的第一个点。 然后从该点(垂直)向房子投射光线并找到第二个点。然后找到2点之间的距离。然后把房子放在第二点(在地面上)+找到的距离上。

+0

你介意提供一些伪代码?我很难跟随你所说的话 – luii