Обращение к объекту из скрипта - Форум Игроделов
Пт, 25 Июл 2025, 03:40 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Обращение к объекту из скрипта
wolfnessДата: Вт, 08 Янв 2013, 11:25 | Сообщение # 1
Нет аватара
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Имеется объект с коллайдером в скрипте rise1. Как обратиться к этому объекту из другого скрипта и превратить коллайдер объекта в префаб.
Сначала, думаю, надо найти объект. Я сделал вот так:
Код
GameObject z = GameObject.Find("Plane1");

А как дальше как превратить вилл коллайдер этого объекта в префаб не пойму.
 
СообщениеИмеется объект с коллайдером в скрипте rise1. Как обратиться к этому объекту из другого скрипта и превратить коллайдер объекта в префаб.
Сначала, думаю, надо найти объект. Я сделал вот так:
Код
GameObject z = GameObject.Find("Plane1");

А как дальше как превратить вилл коллайдер этого объекта в префаб не пойму.

Автор - wolfness
Дата добавления - 08 Янв 2013 в 11:25
seamanДата: Вт, 08 Янв 2013, 14:09 | Сообщение # 2
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Цитата
как превратить вилл коллайдер этого объекта в префаб

никак.
РРРРР.....
Сколько ж раз объяснять - что такое "префаб". Не буду - читайте и думайте сами. Поймите, наконец - что такое "префаб", тогда вопрос просто исчезнет.
 
Сообщение
Цитата
как превратить вилл коллайдер этого объекта в префаб

никак.
РРРРР.....
Сколько ж раз объяснять - что такое "префаб". Не буду - читайте и думайте сами. Поймите, наконец - что такое "префаб", тогда вопрос просто исчезнет.

Автор - seaman
Дата добавления - 08 Янв 2013 в 14:09
wolfnessДата: Вт, 08 Янв 2013, 16:10 | Сообщение # 3
Нет аватара
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Префаб это объект, какая-то модель. Разве нет?
Попробую объяснить по другому. Нужно создать копию префаба на месте коллайдера. Вроде бы так. Что-то наподобие такого:
Код
Instantiate(Sphere1,transform.position,transform.rotation);
Destroy(this.gameObject);

Или я действительно не понимаю сути.


Сообщение отредактировал wolfness - Вт, 08 Янв 2013, 16:12
 
СообщениеПрефаб это объект, какая-то модель. Разве нет?
Попробую объяснить по другому. Нужно создать копию префаба на месте коллайдера. Вроде бы так. Что-то наподобие такого:
Код
Instantiate(Sphere1,transform.position,transform.rotation);
Destroy(this.gameObject);

Или я действительно не понимаю сути.

Автор - wolfness
Дата добавления - 08 Янв 2013 в 16:10
ЛевшаДата: Вт, 08 Янв 2013, 16:29 | Сообщение # 4
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Цитата (wolfness)
Префаб это объект, какая-то модель. Разве нет?

Префаб - это ГеймОбьект.
ГО - игровой обьект содержащий в себе компоненты, в т.ч. модель, скрипты, коллайдеры и т.д.

Цитата (wolfness)
Нужно создать копию префаба на месте коллайдера.

Копию можно создать не на месте коллайдера, а на позиции обьекта который содержит тот коллайдер.

Чтоб получить внятный ответ, надо сформулировать внятную задачу...


X.cor.R (Prologue)
 
Сообщение
Цитата (wolfness)
Префаб это объект, какая-то модель. Разве нет?

Префаб - это ГеймОбьект.
ГО - игровой обьект содержащий в себе компоненты, в т.ч. модель, скрипты, коллайдеры и т.д.

Цитата (wolfness)
Нужно создать копию префаба на месте коллайдера.

Копию можно создать не на месте коллайдера, а на позиции обьекта который содержит тот коллайдер.

Чтоб получить внятный ответ, надо сформулировать внятную задачу...

Автор - Левша
Дата добавления - 08 Янв 2013 в 16:29
wolfnessДата: Вт, 08 Янв 2013, 17:33 | Сообщение # 5
Нет аватара
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Спасибо за объяснение правильной формулировки.
Тогда перефразирую задачу.
Имеется объект Plane1 с вил коллайдером в скрипте rise1. Как обратиться к этому объекту из другого скрипта и создать копию префаба в месте этого объекта?
Сначала, думаю, надо найти объект. Я сделал вот так:
Код

  GameObject z = GameObject.Find("Plane1");

А как копию префаба создать не пойму.
 
СообщениеСпасибо за объяснение правильной формулировки.
Тогда перефразирую задачу.
Имеется объект Plane1 с вил коллайдером в скрипте rise1. Как обратиться к этому объекту из другого скрипта и создать копию префаба в месте этого объекта?
Сначала, думаю, надо найти объект. Я сделал вот так:
Код

  GameObject z = GameObject.Find("Plane1");

А как копию префаба создать не пойму.

Автор - wolfness
Дата добавления - 08 Янв 2013 в 17:33
seamanДата: Вт, 08 Янв 2013, 18:40 | Сообщение # 6
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Цитата
Префаб - это ГеймОбьект.

Это неверно. Префаб - это описание ГеймОбъекта. На основе этого описания создается объект.
Доказательство. Префаб не содержит в себе ни материалов, ни мешей, вообще ничего! Только ссылки на материалы, меши, скрипты и т.п. Можете проверить - удалить скрипт "висящий" на каком-то префабе. Что будт в префабе? Missing script!
Ну нет на самом деле в префабе ничего, кроме ссылок на что-то.
При инстанцировании префаба создается по писанию все - экземпkяры мешей, экземпляры скриптов и т.п.
ЗЫ: я уже об этом писал на форуме. Странно, что это непонятно.
А вот теперь подумайте - как в игре создать префаб? Нужно иметь ссылки на все объекты префаба - скрипты и т.п. Нужно знать внутреннюю структуру префаба - как он там внутри запоминает эти ссылки. Ничего этого нет. Это знает только редактор Юнити. Неудивительно, что префабы создаются только в редакторе.
По поводу вопроса. Как я понял - нужно создать копию объекта. Для этого в редакторе создаем префаб Plane1 и просто в нужный момент в нужном месте его инстанцируем. В чем проблема то?
 
Сообщение
Цитата
Префаб - это ГеймОбьект.

Это неверно. Префаб - это описание ГеймОбъекта. На основе этого описания создается объект.
Доказательство. Префаб не содержит в себе ни материалов, ни мешей, вообще ничего! Только ссылки на материалы, меши, скрипты и т.п. Можете проверить - удалить скрипт "висящий" на каком-то префабе. Что будт в префабе? Missing script!
Ну нет на самом деле в префабе ничего, кроме ссылок на что-то.
При инстанцировании префаба создается по писанию все - экземпkяры мешей, экземпляры скриптов и т.п.
ЗЫ: я уже об этом писал на форуме. Странно, что это непонятно.
А вот теперь подумайте - как в игре создать префаб? Нужно иметь ссылки на все объекты префаба - скрипты и т.п. Нужно знать внутреннюю структуру префаба - как он там внутри запоминает эти ссылки. Ничего этого нет. Это знает только редактор Юнити. Неудивительно, что префабы создаются только в редакторе.
По поводу вопроса. Как я понял - нужно создать копию объекта. Для этого в редакторе создаем префаб Plane1 и просто в нужный момент в нужном месте его инстанцируем. В чем проблема то?

Автор - seaman
Дата добавления - 08 Янв 2013 в 18:40
wolfnessДата: Вт, 08 Янв 2013, 19:18 | Сообщение # 7
Нет аватара
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
А проблема в том, что когда нужно создать копию префаба из скрипта, который висит на объекте, то тут:
Код
   Instantiate(Cube1,transform.position,transform.rotation);
            Destroy(this.gameObject);

и в позиции данного объекта получим префаб. С этим нет проблем. Здесь в позиции данного объекта получаем префаб.

А мне нужно, чтоб префаб копировался в позиции нужного мне объекта, а не на месте того, на котором висит скрипт. Не пойму как привязать к Instantiate объект, в месте которого нужна копия префаба.
 
СообщениеА проблема в том, что когда нужно создать копию префаба из скрипта, который висит на объекте, то тут:
Код
   Instantiate(Cube1,transform.position,transform.rotation);
            Destroy(this.gameObject);

и в позиции данного объекта получим префаб. С этим нет проблем. Здесь в позиции данного объекта получаем префаб.

А мне нужно, чтоб префаб копировался в позиции нужного мне объекта, а не на месте того, на котором висит скрипт. Не пойму как привязать к Instantiate объект, в месте которого нужна копия префаба.

Автор - wolfness
Дата добавления - 08 Янв 2013 в 19:18
ЛевшаДата: Вт, 08 Янв 2013, 19:52 | Сообщение # 8
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Цитата (seaman)
Это неверно. Префаб - это описание ГеймОбъекта. На основе этого описания создается объект.

Кто бы спорил. smile Но для топикСтартера на первом этапе освоения так будет понятнее.

Цитата (wolfness)
мне нужно, чтоб префаб копировался в позиции нужного мне объекта

Ну так надо получить сначала эту позицию, а потом ее применить. smile
Например в триггере:
Код

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);
      }
}


X.cor.R (Prologue)
 
Сообщение
Цитата (seaman)
Это неверно. Префаб - это описание ГеймОбъекта. На основе этого описания создается объект.

Кто бы спорил. smile Но для топикСтартера на первом этапе освоения так будет понятнее.

Цитата (wolfness)
мне нужно, чтоб префаб копировался в позиции нужного мне объекта

Ну так надо получить сначала эту позицию, а потом ее применить. smile
Например в триггере:
Код

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);
      }
}

Автор - Левша
Дата добавления - 08 Янв 2013 в 19:52
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025