Обращение к объекту

Программирование на Юнити.

Обращение к объекту

Сообщение MediaMen 16 апр 2009, 05:17

Гуру, пожалуйста, подскажите! Вопрос простой, но именно таких простых вещей новичкам и не хватает.
В сцене два объекта, на одном висит скрипт например
function OnMouseUp () {
}
Нужно чтобы по нажатию на один объект поворачивался другой например с именем Sphere
Аватара пользователя
MediaMen
UNIт
 
Сообщения: 85
Зарегистрирован: 13 апр 2009, 05:49

Re: Обращение к объекту

Сообщение Neodrop 16 апр 2009, 11:36

На второй (управляющий) объект, вешаем скрипт, где пишем :
Код: Выделить всё
var sphereToRotate : GameObject; // Это открытая переменная, в которую вводишь свою сферу
var rotationScript : RotationScript; // Переменная скрипта, который висит на объекте вращения и называется, скажем, RotationScript; Представим себе, что этот скрипт выключен на старте.
.....
function Start()
{
   sphereToRotate.GetComponent(RotationScript);
}

function OnMouseDown ()
{
   rotationScript.enabled = true;
}

function OnMouseUp()
{
   rotationScript.enabled = false;
}


Этот скрипт, находясь на "управляющем" объекте, включает и выключает на "управляемом" объекте скрипт под названием RotationScript.js. Код которого может быть таким:

Код: Выделить всё
var angle = 3.0;
function FixedUpdate()
{
   transform.Rotate(Vector3(0,angle * Time.deltaTime,0));
}
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Обращение к объекту

Сообщение MediaMen 17 апр 2009, 03:37

Спасибо! То есть скрипт на моей сфере должен быть обязательно?
Просто в directore можно было сделать так: member("3D").model("Sphere").transform.rotation.x = .... из любого места программы.
И еще, как ввести сюда сферу var sphereToRotate : GameObject; ?
Аватара пользователя
MediaMen
UNIт
 
Сообщения: 85
Зарегистрирован: 13 апр 2009, 05:49

Re: Обращение к объекту

Сообщение Neodrop 17 апр 2009, 03:58

Скрипт не обязан висеть на вашем объекте. Просто я написал вариант, в котором один скрипт запускает другого. Но крутить объект можно и из управляющего скрипта. Это ваш выбор.

И еще, как ввести сюда сферу var sphereToRotate : GameObject; ?


После компилляции скрипта в Inspector вашего объекта, появится эта переменная (на поле скрипта) на которую надо просто перетянуть целевой объект из Project View.
Пройдите 3D Platformer Tutorial из раздела Уроки. Это сильно облегчит вам жизнь. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Обращение к объекту

Сообщение MediaMen 17 апр 2009, 06:18

Спасибо, Neodrop, очень оперативно отвечаете! С 3D платформером у меня языковой барьер, потихоньку перевожу, но результат как всегда нужен вчера. Способ указания в инспекторе объекта не совсем то что нужно, поскольку сфера может быть не одна. Ведь должен быть способ сказать Sphera повернись по анологии с lingo? Пока во всех пример которые я нашел скрипт работает с тем объектом на котором висит.
Аватара пользователя
MediaMen
UNIт
 
Сообщения: 85
Зарегистрирован: 13 апр 2009, 05:49

Re: Обращение к объекту

Сообщение Neodrop 17 апр 2009, 06:22

Код: Выделить всё
var sphereToRotate : GameObject;

function Start()
{
   sphereToRotate = GameObject.Find("name of object");
}



Не рекомендую использовать метод GameObject.Find динамически. Он очень медленный. Поэтому передавайте, один раз найденные значения, в переменные.

P.S.
Пройдите 3D Platformer Tutorial из раздела Уроки. Это сильно облегчит вам жизнь. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Обращение к объекту

Сообщение gnoblin 17 апр 2009, 06:29

В коде можно скрипт повесить на произвольный объект как компонент.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Обращение к объекту

Сообщение MediaMen 17 апр 2009, 06:59

Спасибо!
Аватара пользователя
MediaMen
UNIт
 
Сообщения: 85
Зарегистрирован: 13 апр 2009, 05:49


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11