Скрыть деревья при сокрытии игрока - PullRequest
0 голосов
/ 19 ноября 2018

Я создал 3D-игру в единстве с ландшафтом и некоторыми моделями, где игрок может идти куда угодно, а камера следует за ним.

Моя проблема в том, что когда пользователь находится за деревом, как мне сделать дерево прозрачным?

Я уже сделал это с другими моделями с использованием лучей, но деревья являются частью местности, и поэтому я получаю материал ландшафта, а не конкретное дерево.

есть идеи?

заранее спасибо

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Выявление проблемы

Деревья являются частью местности, и если вам нужно сделать деревья, вы можете легко это сделать. Деревья будут иметь класс prefab, и всякий раз, когда игровой объект сталкивается с каким-либо деревом, задача столкновения или, скажем, событие будут выполнять

решение

Тысячи деревьев могут быть легко созданы в случайном месте местности, а затем столкновение может быть легко выполнено с помощью тегов, и код для создания деревьев будет в коде коллайдера. Деревья будут отключены. Ienumerator может применяться в методе обновления. WaitForSeconds (30) будет ждать 30 секунд, а затем код

gameobject.setactive(true)

вернет деревья на свои позиции

код для создания деревьев в случайном месте в методе запуска

 public GameObject trees;
     for (int i = 0; i < 300; i++)
        {
            Vector3 localPosition = new Vector3(Random.Range(-200, 100), 0 , Random.Range(-200, 100));
            Instantiate(trees, localPosition, Quaternion.identity);
        }
0 голосов
/ 19 ноября 2018

Что ж, лучшим решением было бы запустить луч от камеры вперед, а затем поместить камеру немного дальше точки столкновения, чтобы вы не могли видеть дерево.

Ray ray = new Ray(oldCam.position, oldCam.forward);
RaycastHit hit;

if (Physics.Raycast(ray, out hit, 5)){
cam.position = hit.point + oldCam.forward;
} else
cam.position = oldCam.position;

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

Извините за ошибки, я из Испании.

...