将房屋模型统一到地面

时间:2017-08-04 18:10:43

标签: unity3d pivot unityscript 3d-model snapping

我有一个由许多其他模型组成的三维房屋数据集。房子非常多样化。我试图找到一种方法,使用脚本将房子拍到地形。脚本有点工作,问题是有时即使在调整枢轴之后模型也嵌入在地形中。我怎么能修复它,这样一旦拍下的物体只是坐在地形的顶部而不是它的内部?

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

1 个答案:

答案 0 :(得分:0)

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