Если объект в поле зрения камеры и расстояние до объекта манее чем 3 метра, то
сделать чтото...
Сделано:
Помещение, 10 кабинетов по 5 слева и справа. Я в коридоре. Двери кабинетов закрыты.
Когда я подхожу к кабинету, то дверь подсвечивается для открытия, если кликнуть по ней, то дверь открывается. Внутри кабинета пусто, но если войти в него то сработает триггер на появление и внутренности кабинета появятся, если выйти из триггера, то они изчезнут. Триггер это Raycast Collider расположенный вертикально.
Не сделано:
Надо чтобы внутренности появлялись ещё до открытия двери.
Скажем так: Внутри кабинета висит боксик. От камеры идёт отсчёт расстояния до боксика, и
если (расстояние меньше указанного и камера смотрит на кабинет или персонаж внутри помещения)
{то срабатывает функцию появления внутренностей кабинета.}
иначе {скрытие внутренностей}
Вот код скрытия/появления в зависимости от триггера:
Код адаптирован под пережёванную combined children скриптом геометрию, имеющую имя "comb".
- Код: Выделить всё
private var showhide = false;
private var bival = false;
private var hideflag = true;
public var foundItems : ArrayList;
public var ObjectsNames : String = "comb"; //imya dlya poiska geometrii
private var Hidescript : hide;
function OnTriggerEnter ()
{
bival = true;
showhide = true;
//showhide - skrit=false pokazat=true
var allObjects : Object[]; //obshaya peremenneya dlya vsex obj
allObjects = FindObjectsOfType(GameObject); //zapolnyaem ee vsemi objectami
foundItems = new ArrayList(); //peremenneya dlya nyjnix objectov
for (var result : GameObject in allObjects)
{
if (result.name.Equals(ObjectsNames))
{
foundItems.Add(result); //tyt mi nashli na vsei scene vse GO s imenem "comb"
}
}
Hidescript = GetComponent(hide);
}
function OnTriggerExit ()
{
showhide = false;
hideflag = false;
}
function FixedUpdate ()
{
if(showhide == true)
{
//raskrivaem nekotorie vry4nyu skritie obj iz skripta "hide.sj"
var tempobj = Hidescript.Hideadd;
if (tempobj)
{
tempobj.renderer.enabled = true;
}
//raskrivaem vse Combined Mesh s imenem "Comb"
for (var obj : GameObject in foundItems)
{
obj.renderer.enabled = true;
hideflag=true;
}
}
if(showhide == false)
{
if(bival==true)
{
if(hideflag==false)
{
for (var obj : GameObject in foundItems)
{
obj.renderer.enabled = false;
hideflag=true;
}
}
}
}
}
Прошу сразу прощения, код достаточно путаный, писал долго и с кровавым потом ибо програмить не умею.
Но если у вас есть свободное время, пожалуйста помогите доработать этот код для грамотной его активации.