Как проверить возможно ли теоретически увидеть объект из конкретной точки
Делаю игру в которой нужно делать рандомные темные коридоры, к примеру:

Сделал код в котором определяю рандомную позицию потом затемняю клон материала в зависмости от расстояния.
GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("Map"); // получаем все стены, полы, и потолки
for (int i = 0; i < 5; i++)
{
Vector3 vector = wanderer.GetNewTargetHallway() + new Vector3(0,5,0);// получаем случайную позицию
foreach (GameObject gameObject in gameObjects)
{
MeshRenderer meshRenderer = gameObject.GetComponent<MeshRenderer>();
if (Vector3.Distance(gameObject.transform.position, vector) < 25f)
{
meshRenderer.material = Instantiate<Material>(meshRenderer.material); // клонируем материал
meshRenderer.material.color = Color.white * (Vector3.Distance(gameObject.transform.position, vector) / 25); // затемняем матерал в зависимости от расстояния
}
}
}
Однако, затемнение срабатывает через стены, что выглядит не очень:

Как проверить возможно ли теоретически увидеть объект из конкретной точки?
Ответы (1 шт):
Есть такое понятие как Шейдер (Shader). Он отрисовывает текстуру поверх меша (поверхности).
Обычно ради оптимизации шейдеры являются "односторонними" - т.е. там отрисовывается одна текстура на обе плоскости полигона или вообще только на одну, а вторая плоскость является прозрачной.
Тебе необходимо использовать двухсторонний шейдер на твои стены и тогда ты сможешь задать текстуру на каждую отдельную сторону. Или же сделать обьемные стены и менять затемнение текстуры только куска.
Для того что бы найти примеры как стандартные так и кастомные ты можешь ввести в гугле "unity double sided shader"
и в том числе найти подобный на ассет сторе:
https://assetstore.unity.com/packages/vfx/shaders/free-double-sided-shaders-23087
Теперь по поводу вопроса "Есть какой-нибудь способ проверить видно ли объект из конкретной точки?"
Я бы советовал обратиться к документации по методу
GetComponent<Renderer>().isVisible
Или же обратиться к вот этому вопросу: https://ru.stackoverflow.com/a/1321860/186752
Возможно там чего интересного найдешь
