Назначить функцию чилду
|
|
andarky | Дата: Понедельник, 18 Февраля 2013, 11:25 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Незнаю даже как это гуглить правильно, поэтому сюда и пишу. Смысл вот в чем: есть несколько функций у родительского объекта: Код Func1() Func2() Func3() И я хочу эти функции назначить чилду. Так же как в языках ActionScript:
Код Object1.onRollOver() = Func1; Object2.onRollOver() = Func2; ...
т.е. в Unity должно быть как-то так: Код Child[1].OnTriggerEnter() = Func1(); Child[2].OnTriggerEnter() = Func1(); ... Child[1].OnTriggerExit() = Func2(); Child[2].OnTriggerExit() = Func3();
Такое возможно на JS ? Наверное на C# - ДА. Но я в нём не понимаю, поэтому кто знает JS, подскажите, пожалуйста КАК
Моя страничка по дизайну GameDev//Design//3D Ютубчик
Сообщение отредактировал andarky - Понедельник, 18 Февраля 2013, 11:27 |
|
| |
Левша | Дата: Понедельник, 18 Февраля 2013, 15:54 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| Цитата (andarky) Такое возможно на JS ? Наверное на C# - ДА. Нет. Архитектура будет несколько иная. В чилдах должны присутствовать эти функции, а из родителя их можно запускать при условии что они публичные.
X.cor.R (Prologue)
|
|
| |
andarky | Дата: Понедельник, 18 Февраля 2013, 16:02 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| значит я не могу, например: В родителе прописать Код function Func1() { transform.Rotate(0,15,0);}
назначить это родителем его чилду, чтоб чилд понимал transform как свой?
например:Код function Func1(u) { transform.Rotate(0,u,0);}
transform.Find('Child1').OnTriggerEnter() = Func1(15); transform.Find('Child2').OnTriggerEnter() = Func1(-20);
Чтоб чилдам действие сверху назначалось?
Или только так чтоб эти Func1/Func2/Func3.... - всё было уже в чилде а родитель только дает указание КАКУЮ именно выполнить?
Моя страничка по дизайну GameDev//Design//3D Ютубчик
|
|
| |
Левша | Дата: Понедельник, 18 Февраля 2013, 18:46 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| Цитата (andarky) чтоб чилд понимал transform как свой? Нет, но мы можем получить в родителе ссылку на трансформ чилда и работать с ним.
ЗЫ. В Юнити нельзя вертеть обьекты через transform.Rotate, только через Quaternion или Euler.
X.cor.R (Prologue)
|
|
| |
andarky | Дата: Вторник, 19 Февраля 2013, 06:15 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Левша, Цитата (Левша) нельзя вертеть обьекты через transform.Rotate, только через Quaternion или Euler. это всё фигня... просто что в голову взбрело - то я и написал
Цитата (Левша) мы можем получить в родителе ссылку на трансформ чилда и работать с ним это я тоже знаю
итак, допустим Код Child1=transform.Find('Child1'); Child1.OnTriggerEnter() = Func1(15);
смысл: Чтобы у чилда в OnTriggerEnter() выполнялась Func1() - которая в родителе прописана Это невозможно?
Или КАК?
Моя страничка по дизайну GameDev//Design//3D Ютубчик
Сообщение отредактировал andarky - Вторник, 19 Февраля 2013, 06:15 |
|
| |
Novatorvlad | Дата: Вторник, 19 Февраля 2013, 07:07 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Бред какой-то пишешь. Нахрена из предка вызывать функцию в чилде ? Да и ты в ООП, как я в балете. Чилд.геткомпонент<скрипт>().функция(15) так еще можно... Добавлено (19.02.2013, 07:07) --------------------------------------------- Тфу, допёрло. Обьект создай, блин.
Девбложек
|
|
| |
andarky | Дата: Вторник, 19 Февраля 2013, 11:26 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| Цитата (Novatorvlad) Обьект создай, блин. а подробнее можно?
Я хочу написать несколько функций и разным объектам (чилдам) назначить их на разные события (OnTriggerEnter/ OnTriggerExit/ OnMoouseEnter/ OnCollision ...) в зависимости от чилда (имени) ему будет назначаться разная функция и при том в разные события (OnTriggerEnter/ OnTriggerExit/ OnMoouseEnter/ OnCollision ...) т.е изначально у чилдов всё пусто:
Код function OnTriggerEnter() {};
function OnTriggerExit() {};
function OnMouseEnter() {}; ...
родитель должен им назначать поведение...
теперь задача ясна?
Можно такое?
Моя страничка по дизайну GameDev//Design//3D Ютубчик
|
|
| |
IIyxMASTER | Дата: Вторник, 19 Февраля 2013, 11:43 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| заведи в чилдах переменную, в которой будет храниться номер действия. От родителя отправляй сообщения с номером нужной функции. псевдокод: Код число А = 0 function OnTriggerEnter() { если а == 0 то ничего не делать если а == 1 то прыгать если а == 2 то бегать }; Родитель считает, что при столкновении конечность должна бегать - отправляет ей сообщение, меняя число А на 2 Родитель считает, что при столкновении конечность более ничего не должна делать - ставит ей А равную 0 Примерно ясна логика?:-)
либо если хочется, чтоб вся логика была сосредоточена в родителе Код function OnTriggerEnter() { отправить сообщение родителю "Меня коснулись"; }; Родитель это сообщение получает и начинает манипулировать ребятенком.
Сообщение отредактировал IIyxMASTER - Вторник, 19 Февраля 2013, 11:45 |
|
| |
andarky | Дата: Вторник, 19 Февраля 2013, 15:11 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| IIyxMASTER, в ActionScript есть свищи и казы: Код switch (nn) { case 1: <..> break;
case 2: <..> break;
case 3: <..> break;
... //и далее }
наверное и JS в Unity Должно быть.
Всё же это не совсем то...Добавлено (19.02.2013, 14:30) --------------------------------------------- я щас нарисую Добавлено (19.02.2013, 15:11) --------------------------------------------- значит вот: есть объект пустышка (с триггером) внутри него анимированный персонаж с коллайдером и ригидбодем. если я попадаю в триггер должна сработать реакция на меня: перс включает анимацию и предпринимает разные дейтсвия.
НО! идя в него иногда игнорируется его коллайдер! а иногда срабатывает ригидбоди - что вообще правильно. Только, например я оттолкнул пресонажа и тот отлетел. Когда я иду дальше - срабатывает OnTriggerExit того пустышки-родителя. Он то НИКУДА не делся... и, вот что: перс опять появляется в (0,0,0) и играет соответствующая анимация
я вскоре понял, что тут что-то не так и сделал вот чо: теперь родитель сидит внутри чилда (в реальности такого не бывает) у него свой коллайдер с ригидбоди. А чилд имеет триггер. Теперь: всё правильно с физикой. И всё переделал наоборот...
смысл таков: ребенок говорит маме: В меня кто-то вошел. А мам из животика дает указания как действовать...
Вот такой выход я нашел. Правильно ли это??
Моя страничка по дизайну GameDev//Design//3D Ютубчик
|
|
| |
JHawk | Дата: Вторник, 19 Февраля 2013, 19:17 | Сообщение # 10 |
めゃくちゃちゃ
Сейчас нет на сайте
| andarky, немножко не понятно, что ты хочешь сделать в итоге... Может ты скажешь?
|
|
| |
Левша | Дата: Вторник, 19 Февраля 2013, 19:26 | Сообщение # 11 |
почти ветеран
Сейчас нет на сайте
| Я мало что понял... но думаю тебе нужны massage для вызова функций в других обьектах...
X.cor.R (Prologue)
|
|
| |
JHawk | Дата: Вторник, 19 Февраля 2013, 19:31 | Сообщение # 12 |
めゃくちゃちゃ
Сейчас нет на сайте
| Левша, SendMessage нужно отправлять конкретному обьекту, а тут ему надо на неизвестный обьект вроде..
|
|
| |
seaman | Дата: Вторник, 19 Февраля 2013, 20:52 | Сообщение # 13 |
старожил
Сейчас нет на сайте
| SendMessage можно отправить без адреса.
|
|
| |
Левша | Дата: Вторник, 19 Февраля 2013, 21:30 | Сообщение # 14 |
почти ветеран
Сейчас нет на сайте
| Цитата (seaman) без адреса. И оно дойдет до адресата с вызываемым методом в любом случае.
X.cor.R (Prologue)
|
|
| |