Четверг, 18 Апреля 2024, 22:35

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Назначить функцию чилду (есть функция как её назаначить объекту?)
Назначить функцию чилду
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 для вызова функций в других обьектах... confused

X.cor.R (Prologue)
JHawkДата: Вторник, 19 Февраля 2013, 19:31 | Сообщение # 12
めゃくちゃちゃ
Сейчас нет на сайте
Левша, SendMessage нужно отправлять конкретному обьекту, а тут ему надо на неизвестный обьект вроде..
seamanДата: Вторник, 19 Февраля 2013, 20:52 | Сообщение # 13
старожил
Сейчас нет на сайте
SendMessage можно отправить без адреса.
ЛевшаДата: Вторник, 19 Февраля 2013, 21:30 | Сообщение # 14
почти ветеран
Сейчас нет на сайте
Цитата (seaman)
без адреса.

И оно дойдет до адресата с вызываемым методом в любом случае.
smile


X.cor.R (Prologue)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Назначить функцию чилду (есть функция как её назаначить объекту?)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг