Скрыть деревья при сокрытии игрока
Я создал 3D-игру в единстве с ландшафтом и некоторыми моделями, где игрок может идти куда угодно, а камера следует за ним.
моя проблема в том, когда пользователь находится за деревом, как мне сделать дерево прозрачным?
Я уже делал это с другими моделями с использованием лучей, но деревья являются частью ландшафта, и поэтому я получаю материал местности, а не конкретное дерево.
есть идеи?
заранее спасибо
1 ответ
Выявление проблемы
Деревья являются частью ландшафта, и если вам нужно сделать деревья, вы можете легко это сделать. Деревья будут иметь класс 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);
}
Что ж, лучшим решением было бы запустить луч от камеры к передней, а затем поместить камеру немного дальше точки столкновения, чтобы вы не могли видеть дерево.
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;
Не забудьте установить прежнее положение камеры в том месте, где оно должно быть, чтобы камера не уходила и оставалась там, и чтобы камера и старая камера имели одинаковый код положения и поворота, прежде чем это произойдет, а затем вы просто меняете их положение, Я имею в виду, я не знаю, все ли в порядке, но вы можете сделать выводы из этого.
Извините за ошибки, я из Испании.