Имеется объект с коллайдером в скрипте rise1. Как обратиться к этому объекту из другого скрипта и превратить коллайдер объекта в префаб. Сначала, думаю, надо найти объект. Я сделал вот так:
Код
GameObject z = GameObject.Find("Plane1");
А как дальше как превратить вилл коллайдер этого объекта в префаб не пойму.
как превратить вилл коллайдер этого объекта в префаб
никак. РРРРР..... Сколько ж раз объяснять - что такое "префаб". Не буду - читайте и думайте сами. Поймите, наконец - что такое "префаб", тогда вопрос просто исчезнет.
Префаб это объект, какая-то модель. Разве нет? Попробую объяснить по другому. Нужно создать копию префаба на месте коллайдера. Вроде бы так. Что-то наподобие такого:
Спасибо за объяснение правильной формулировки. Тогда перефразирую задачу. Имеется объект Plane1 с вил коллайдером в скрипте rise1. Как обратиться к этому объекту из другого скрипта и создать копию префаба в месте этого объекта? Сначала, думаю, надо найти объект. Я сделал вот так:
Это неверно. Префаб - это описание ГеймОбъекта. На основе этого описания создается объект. Доказательство. Префаб не содержит в себе ни материалов, ни мешей, вообще ничего! Только ссылки на материалы, меши, скрипты и т.п. Можете проверить - удалить скрипт "висящий" на каком-то префабе. Что будт в префабе? Missing script! Ну нет на самом деле в префабе ничего, кроме ссылок на что-то. При инстанцировании префаба создается по писанию все - экземпkяры мешей, экземпляры скриптов и т.п. ЗЫ: я уже об этом писал на форуме. Странно, что это непонятно. А вот теперь подумайте - как в игре создать префаб? Нужно иметь ссылки на все объекты префаба - скрипты и т.п. Нужно знать внутреннюю структуру префаба - как он там внутри запоминает эти ссылки. Ничего этого нет. Это знает только редактор Юнити. Неудивительно, что префабы создаются только в редакторе. По поводу вопроса. Как я понял - нужно создать копию объекта. Для этого в редакторе создаем префаб Plane1 и просто в нужный момент в нужном месте его инстанцируем. В чем проблема то?
и в позиции данного объекта получим префаб. С этим нет проблем. Здесь в позиции данного объекта получаем префаб.
А мне нужно, чтоб префаб копировался в позиции нужного мне объекта, а не на месте того, на котором висит скрипт. Не пойму как привязать к Instantiate объект, в месте которого нужна копия префаба.
Это неверно. Префаб - это описание ГеймОбъекта. На основе этого описания создается объект.
Кто бы спорил. Но для топикСтартера на первом этапе освоения так будет понятнее.
Цитата (wolfness)
мне нужно, чтоб префаб копировался в позиции нужного мне объекта
Ну так надо получить сначала эту позицию, а потом ее применить. Например в триггере:
Код
function OnTriggerEnter (hit : Collider) { Instantiate(Cube1, hit.gameObject.transform.position, transform.rotation); }
или рейкаст:
Код
function Update () { var hit : RaycastHit; var fwd = transform.TransformDirection (Vector3.forward); if (Physics.Raycast (transform.position, fwd, hit, 100)) { Instantiate(Cube1, hit.gameObject.transform.position, transform.rotation); } }