Четверг, 25 Апреля 2024, 03:46

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » [РЕШЕНО] Прилипание
[РЕШЕНО] Прилипание
Andruha93Дата: Вторник, 17 Сентября 2013, 23:38 | Сообщение # 1
частый гость
Сейчас нет на сайте
Всем доброго вечера !! Я уже третий день ломаю голову. Я создаю игру-конструктор в которой у меня есть шкаф (для бутылочек с зельями и его я передвигаю с помощью мышки) с левой и правой стороны у него есть триггеры(для прилипания к стене), они является дочерними и мне нужно чтобы эти триггеры выступали в роли центров пивотов. Это нужно для того что бы шкаф прилипала к стене именно левой или правой стенкой, а не тем местом в где находится её настоящий центр. Но так как эти триггеры являются дочерними к шкафу, то если мы присваиваем триггеру положение стены, то передвинется сам триггер а шкаф нет.



Сообщение отредактировал Andruha93 - Среда, 18 Сентября 2013, 22:01
romgermanДата: Вторник, 17 Сентября 2013, 23:50 | Сообщение # 2
старожил
Сейчас нет на сайте
djwirtuozДата: Среда, 18 Сентября 2013, 00:05 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Скриптом присвой положение шкафа к положению правого тригера (напоимер) минус какое то значение. И пусть это выполняктся, если положение тригера этого близко к стене

Мы отстроили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее.
Andruha93Дата: Среда, 18 Сентября 2013, 00:14 | Сообщение # 4
частый гость
Сейчас нет на сайте
Цитата (djwirtuoz)
Скриптом присвой положение шкафа к положению правого тригера (напоимер) минус какое то значение.

Да я так и хотел, а точнее потом из положения шкафа вычесть по оси Х длинну половины шкафа, но проблемма в том что у шкафа все размеры равны 1,1,1....
djwirtuozДата: Среда, 18 Сентября 2013, 00:20 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Это не размеры, это типа массштаб. Лучше с координатами методом подбора помучайся. Не думаю что там много нужно вычитать

Мы отстроили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее.
Andruha93Дата: Среда, 18 Сентября 2013, 00:27 | Сообщение # 6
частый гость
Сейчас нет на сайте
аа тоесть надо найти расстояние на которое сдвигать шкаф относительно триггера ?? Такой метод мне не подойдет потому что у меня будет много таких объектов и для каждого придется отдельно искать расстояние сдвига...
djwirtuozДата: Среда, 18 Сентября 2013, 00:32 | Сообщение # 7
почетный гость
Сейчас нет на сайте
Пока будешь из делать, то да, кропотливо. А потом префабов наделай и все. Да и скрипты будут позожи, меняй только значение того что вычитаешь. На мой взгляд, это самое простое:-)

Мы отстроили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее.
Andruha93Дата: Среда, 18 Сентября 2013, 00:37 | Сообщение # 8
частый гость
Сейчас нет на сайте
ОК но вопрос все равно еще в силе
djwirtuozДата: Среда, 18 Сентября 2013, 00:39 | Сообщение # 9
почетный гость
Сейчас нет на сайте
Согласен. Интересный вопрос:-)

Мы отстроили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее.
Andruha93Дата: Среда, 18 Сентября 2013, 00:46 | Сообщение # 10
частый гость
Сейчас нет на сайте
Не поверишь ! я на трех форумах эту тему открыл часа 4 назад и ты первый кто откликнулся. Но самое интересное что после меня еще куча народу вопросов на задовали и им уже помогли решить их проблеммы, а мой вопрос как будто не видят
djwirtuozДата: Среда, 18 Сентября 2013, 00:54 | Сообщение # 11
почетный гость
Сейчас нет на сайте
А я не часто кому то отвечаю как видишь:-) но этот вопрос заинтересовал.
Народ, отзовитесь!!!


Мы отстроили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее.
KamiRoninДата: Среда, 18 Сентября 2013, 01:01 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
Там лучше всего вычислять рамку вокруг объекта.
используется:
Код

vector3 centr = gameObject.renderer.bounds.center;
vector3 extn = gameObject.renderer.bounds.extents;

// и потом вычисляешь с помощью получения 8 точек...
vec[0] = cam.WorldToScreenPoint(new Vector3(center.x - extn.x, center.y + extn.y, center.z + extn.z));
...

// а потом ищешь минимумы и получаешь 2D размеры по ним!
...


я нашел когда хотел размещать 2D текстуру точно над объектом

а вот откуда взял прием

процедурка будет микроскопическая, хоть и страшная! smile
а польза - решит твое дело точно!!

там только нужно будет приспособить "рамку" или 8 точек под твою задачу.
удачи!


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.


Сообщение отредактировал KamiRonin - Среда, 18 Сентября 2013, 01:02
Andruha93Дата: Среда, 18 Сентября 2013, 01:17 | Сообщение # 13
частый гость
Сейчас нет на сайте
ООО даа вот это реально крутой способ !!!
KamiRoninДата: Четверг, 19 Сентября 2013, 08:44 | Сообщение # 14
почти ветеран
Сейчас нет на сайте
а вообще я придумал более изящный способ: wink
* у шкафа должен быть регидбоди! и скрипт Х с 1 переменной и процедурой OnCollisionEnter, Update.
* в триггере (скажем правом), в OnTriggerEnter, когда оно сработало, устанавливаешь переменную StartMagneting скрипта Х (!!) в true
* в Update скрипта Х, КОГДА StartMagneting == true: отключается мышь (чтоб не мешал юзер магнититься, опция), на каждом тике шкаф.трансформ.поз.Х + 0.01 * время (или минус - если левый триггер сработал)
* как только в скрите Х шкафа случился OnCollisionEnter с объектом с тегом Wall -- StartMagneting = false!

ииииии йййууххууууу!! никаких расчетов и никаких заморочек!!! алилуйя брат!

итог: два наноскопических скрипта, в которых ООООДДДДДННННААААА переменная, две процедуры - в одной 1 строчка, в другой около ТРЕХ, настройки сцены - ригидбоди, теги. ВСЕ!!

З.Ы. а ведь есть еще возможность шкафам и тумбочкам приделать тег Мебля и реагировать на него тоже - тогда можно магнититься к тумбе которая примагнитилась к стене и тп..
а блин, в этом случае еще нужна переменная в Х - кого иммено юзер тащил - только тот и должен магнититься, а то тумбочки ДРУГ К ДРУГУ будут бегать! воооот блииииинннн ЕЩЕ ОДНА переменная!!! :))))))

мыслю - значит программирую. и программировать можно нелинейно!!


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.


Сообщение отредактировал KamiRonin - Четверг, 19 Сентября 2013, 08:49
Andruha93Дата: Четверг, 19 Сентября 2013, 10:56 | Сообщение # 15
частый гость
Сейчас нет на сайте
к сожелению этот способ не подойдет, потому что я не только шкафы хочу к стене приклеивать но и стены собирать из блоков (как в Майнкрафт), а при их сборке нужно максимально точно размещать друг возле друга, а потом у меня по плану будет сделать небольшую платформу ровно в центре которой можно будет размешать какое либо оружие да и вообще таких объектов будет очень много поэтому нужна максимальная точность тут поможет только Bounds.

АА и самое главное ! объекты не всегда будут повернуты к объекту соприкосновения под прямым углом.


Сообщение отредактировал Andruha93 - Четверг, 19 Сентября 2013, 11:00
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » [РЕШЕНО] Прилипание
  • Страница 1 из 1
  • 1
Поиск:

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