Всегда двигайтесь по поверхности сетки единства C # - PullRequest
0 голосов
/ 07 октября 2019

У меня есть куб, который я хочу всегда перемещать по поверхности сетки. Как у меня есть пункт назначения на поверхности, куда игрок хочет пойти, но он должен идти к месту назначения, не покидая меша. Как это идет по поверхности сетки. Я знаю, что могу двигаться к пункту назначения следующим образом:

   IEnumerator MoveToDirection(Vector3 startPosition, Quaternion orientation, Transform planet)
    {
        GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
        go.transform.rotation = orientation;
        go.transform.position = startPosition;

        while (true)
        {
            go.transform.position=  go.transform.position + go.transform.up * Time.deltaTime* speed;

            yield return new WaitForEndOfFrame();
        }

    }

Но не знаю, как ограничить то, что он не должен покидать поверхность меша.

1 Ответ

1 голос
/ 07 октября 2019

Есть 3 способа добиться этого эффекта:

  1. Использовать физику: прикрепить твердое тело / коллайдер к кубу / сетке и использовать что-то вроде AddForce
  2. Добавить каждый кадр перемещения куба к цели и рассчитать положение во время выполнения. Если у вас есть формула для расчета высоты (например, если вы создаете сетку из шума или просто сферу) - вы можете использовать формулу, в другом случае вы можете добавить MeshCollider к сетке и RayCast точку касаниясетка / куб каждый кадр + правильная позиция куба
  3. Если сетка не бесконечна, вы можете использовать Unity Nav Mesh system - это будет самый простой способ решения сложных задач.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...