[РЕШЕНО] Прилипание
|
|
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 текстуру точно над объектом
а вот откуда взял прием
процедурка будет микроскопическая, хоть и страшная! а польза - решит твое дело точно!!
там только нужно будет приспособить "рамку" или 8 точек под твою задачу. удачи!
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Среда, 18 Сентября 2013, 01:02 |
|
| |
Andruha93 | Дата: Среда, 18 Сентября 2013, 01:17 | Сообщение # 13 |
частый гость
Сейчас нет на сайте
| ООО даа вот это реально крутой способ !!!
|
|
| |
KamiRonin | Дата: Четверг, 19 Сентября 2013, 08:44 | Сообщение # 14 |
почти ветеран
Сейчас нет на сайте
| а вообще я придумал более изящный способ: * у шкафа должен быть регидбоди! и скрипт Х с 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 |
|
| |