Привязать модель дома к земле в единстве
У меня есть набор данных 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);
}
}
}
}
1 ответ
Отдайте лучевую передачу от центра дома на землю, чтобы найти первую точку. Затем примените raycast от этой точки (вертикально) к дому и найдите вторую точку. Затем найдите расстояние между этими двумя точками. Затем поместите дом во вторую точку (на землю) + найденное расстояние.