22 Сентября 2024, 08:33:12
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Логика > интерактивность
интерактивность
(Прочитано 29921 раз)
  1 [2] 3
Печать
TiR | * | Новичок | Сообщений: 14 | «Ответ #15 11 Мая 2008, 19:45:42 »
Re: интерактивность |
15
добавь к кнопке get distance и сделай 2 условия с помощью expression - при вхождении в зону и нажатию кнопки срабатывает действие, т.е. откроется дверь..
вот только я пока не знаю как сделать, чтобы при нарушении условий дверь так и осталась открытой???))
KBECT0MAH | ***** | Модератор | Старожил | Сообщений: 434 | «Ответ #16 11 Мая 2008, 20:09:46 »
Re: интерактивность |
16
добавь к кнопке get distance и сделай 2 условия с помощью expression - при вхождении в зону и нажатию кнопки срабатывает действие, т.е. откроется дверь..
вот только я пока не знаю как сделать, чтобы при нарушении условий дверь так и осталась открытой???))

Если делать через дистанцию, то с обратной стороны стены дистанция тоже будет просчитываться Подмигивающий
Можно сделать через CollisionRayCheck, поставив невидимый бокс перед кнопкой.
Пример в теме про "аквапаркные трубы" - http://guest3d.wohlnet.ru/forum/index.php?topic=173.0

Что бы дверь оставалась открытой, надо подключать через Trigger.
.
TiR | * | Новичок | Сообщений: 14 | «Ответ #17 11 Мая 2008, 22:55:45 »
Re: интерактивность |
17
что-то я не соображу к чему триггер подключать и какие там настройки делать Обеспокоенный
как там сейчас сделано - так при нажатии дверь не открывается, а дергается, если убрать триггер, то все норм, вот только дверь после нажатия кнопки возле нее становится автоматической до того времени, пока еще раз не нажать кнопку  Строит глазки
подскажите, плиз, что-то я уже ничего не соображаю...

* scren21.JPG (39.06 Кб, 948x803 - просмотрено 2759 раз.)
cashis | **** | Старожил | Сообщений: 353 | «Ответ #18 12 Мая 2008, 18:51:59 »
Re: интерактивность |
18
Я сделал чтобы при выполнении трёх условий кнопка нажималась:
1.Detect mouse collision
2.user input(mouse click)
3.value operator(get distanse(vector,vector)) EXPRESSION:A<1
и всё и терь только находясь рядом с ней по ней можно кликать.

Но больше всего меня волнует один вопрос который я задавал неоднократно и так и не получил ответ:
Как сделать так чтобы курсор мыши находился всегда точно в центре экрана(этот способ удобен и используется во всех экшенах)?
cashis | **** | Старожил | Сообщений: 353 | «Ответ #19 16 Мая 2008, 15:52:16 »
Re: интерактивность |
19
АУУУУ КТО ЗНАЕТ КАК ЗАБИТЬ ПОЗИЦИЮ КУРСОРА И ЧТОБ ОН НЕ ДВИГАЛСЯ
mistud | ** | Пользователь | Сообщений: 81 | «Ответ #20 16 Мая 2008, 19:14:00 »
Re: интерактивность |
20
Прикрути этот If к Start 3D Scene
Комментарий: работает только в полноэкранном режиме.

* Cursor Position.jpg (91.1 Кб, 359x512 - просмотрено 2799 раз.)
« Последнее редактирование: 16 Мая 2008, 19:16:27 от mistud »
cashis | **** | Старожил | Сообщений: 353 | «Ответ #21 17 Мая 2008, 12:21:29 »
Re: интерактивность |
21
ОГРОМНОЕ ТЕБЕ СПАСИБО
cashis | **** | Старожил | Сообщений: 353 | «Ответ #22 07 Июля 2009, 12:57:10 »
Re: интерактивность |
22
Возникла ещё одна проблема с интерактивностью:
Если я хоть каким нибудь способом прикручиваю DetectMouseCollision к DrawObject любого объекта он просто перестаёт работать, как только отключаю работает только так =((((((((
(уже и через Set Value и через IF пробовал, всё равно не фурычит)
Помогите чем можете !
Заранее Спасибо.

* chisto_shemotichniy_resunok.jpg (27.08 Кб, 717x629 - просмотрено 2677 раз.)
« Последнее редактирование: 07 Июля 2009, 18:51:37 от cashis »
mixey | ** | Пользователь | Сообщений: 74 | «Ответ #23 07 Июля 2009, 21:14:43 »
Re: интерактивность |
23
cashis, а я собственно не понял в чем проблема! Ты присоединяешь канал DetectMouseCollision (который реагируют на пересечение объекта с курсором) к параметру  DrawObject (который отвечает за прорисовку объекта на экране). Если значение этого параметра равно 0, то объект не рисуется, если 1, то рисуется. Поскольку изначально курсор объект не пересекает, то у тебя в DetectMouseCollision будет 0 и объект не будет виден. А еще ты не присоединил к DetectMouseCollision ничего, поэтому он у тебя всегда будет 0.
cashis | **** | Старожил | Сообщений: 353 | «Ответ #24 08 Июля 2009, 11:56:03 »
Re: интерактивность |
24
cashis, а я собственно не понял в чем проблема! Ты присоединяешь канал DetectMouseCollision (который реагируют на пересечение объекта с курсором) к параметру  DrawObject (который отвечает за прорисовку объекта на экране). Если значение этого параметра равно 0, то объект не рисуется, если 1, то рисуется. Поскольку изначально курсор объект не пересекает, то у тебя в DetectMouseCollision будет 0 и объект не будет виден. А еще ты не присоединил к DetectMouseCollision ничего, поэтому он у тебя всегда будет 0.
Я это чисто схематически изобразил, вообще, я сейчас пытаюсь сделать инвентарь и для этого мне надо чтобы при клике на объект он пропадал, но одновременно появлялся в инвентаре, я сделал всё поидее как надо, но всё равно если хоть где-то присутствует DetectMouseCollision, то всё перестаёт работать.
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #25 08 Июля 2009, 12:08:04 »
Re: интерактивность |
25
cashis
Сделай проще, введи дополнительную переменную(флаг), которая будет менять значение на 0 или 1(например 1 это означает, что объект попал в инвентарь) и переключай.
Наверное удобнее будет использовать массив(можно будет в цикле перебирать объекты и менять значения в массиве с индексом "номер объекта").
« Последнее редактирование: 08 Июля 2009, 12:17:43 от Ruslan »
cashis | **** | Старожил | Сообщений: 353 | «Ответ #26 08 Июля 2009, 12:15:32 »
Re: интерактивность |
26
cashis
Сделай проще, введи дополнительную переменную(флаг), которая будет менять значение на 0 или 1(например 1 это означает, что объект попал в инвентарь) и переключай.
Ну тк я понимаю, это всё халява, этому учат на начальных уроках програмирования =))))) Я просто не могу заставить объект исчезать, а чтобы при клике объект появлялся в инвентаре, да это вообще легко сделать. Значит придётся пользоваться моей первой идеей, чтобы при клике на объект он менял положение (и таким образом уходил например глубоко под землю).

* vot_kak_na_samom_dele.jpg (264.23 Кб, 915x829 - просмотрено 2684 раз.)
« Последнее редактирование: 08 Июля 2009, 12:23:16 от cashis »
cashis | **** | Старожил | Сообщений: 353 | «Ответ #27 08 Июля 2009, 12:37:16 »
Re: интерактивность |
27
Ты похоже чё то не понял, и ты мне так объясняешь, как-будто я вообще дурак.
Я сделал так:
Если нажата кнопка мыши, курсор колизирует с объектом и объект виден, то он должен стать невидимым и одновременно становится видимым объект в инвентаре.
И обратное для объекта в инвентаре.
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #28 08 Июля 2009, 12:38:26 »
Re: интерактивность |
28
если ты все уже сделал, то я не пойму в чем тогда проблема?
сделай два объекта(один в сцене отображается, другой в инвентаре) и включай-выключай их.
« Последнее редактирование: 08 Июля 2009, 12:43:51 от Ruslan »
Viik | **** | Старожил | Сообщений: 302 | «Ответ #29 08 Июля 2009, 12:58:32 »
Re: интерактивность |
29
Получаеться что твой DetectMouseCollision используеться как флаг для объекта который он же проверяет. Чтобы DetectMouseCollision заработал нужно делать как Ruslan тебе и написал через сет валюе. Если объект не рисуеться (Draw object = 0) то и никакого детекта не будет. Поэтому когда к Draw object ты подключаеш DetectMouseCollision он и не работает, ему нечего детектить, он не видит объект, а объект невидим потому что не никакого детекта Подмигивающий
 
  1 [2] 3
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Логика > интерактивность
Перейти в: