38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using UnityEngine;
|
||
using UnityEngine.Rendering;
|
||
|
||
public class CeilingVisibility : MonoBehaviour
|
||
{
|
||
private Renderer _renderer;
|
||
private Camera _cam;
|
||
|
||
void Start()
|
||
{
|
||
_renderer = GetComponent<Renderer>();
|
||
_cam = Camera.main;
|
||
}
|
||
|
||
void LateUpdate()
|
||
{
|
||
if (_cam == null || _renderer == null) return;
|
||
|
||
// Если камера находится ВЫШЕ потолка
|
||
if (_cam.transform.position.y > transform.position.y)
|
||
{
|
||
// Делаем сам потолок невидимым, но заставляем его отбрасывать тень в комнату!
|
||
if (_renderer.shadowCastingMode != ShadowCastingMode.ShadowsOnly)
|
||
{
|
||
_renderer.shadowCastingMode = ShadowCastingMode.ShadowsOnly;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// Если камера опустилась ВНУТРЬ комнаты (ниже потолка)
|
||
if (_renderer.shadowCastingMode != ShadowCastingMode.On)
|
||
{
|
||
// Возвращаем потолку видимость
|
||
_renderer.shadowCastingMode = ShadowCastingMode.On;
|
||
}
|
||
}
|
||
}
|
||
} |