• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

Новости:

Форум Quest3D восстановлен!

Главное меню

интерактивность

Автор cashis, 19 апреля 2008, 12:29:06

« назад - далее »

TiR

добавь к кнопке get distance и сделай 2 условия с помощью expression - при вхождении в зону и нажатию кнопки срабатывает действие, т.е. откроется дверь..
вот только я пока не знаю как сделать, чтобы при нарушении условий дверь так и осталась открытой???))

KBECT0MAH

Цитата: TiR от 11 мая 2008, 20:45:42
добавь к кнопке get distance и сделай 2 условия с помощью expression - при вхождении в зону и нажатию кнопки срабатывает действие, т.е. откроется дверь..
вот только я пока не знаю как сделать, чтобы при нарушении условий дверь так и осталась открытой???))

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

Что бы дверь оставалась открытой, надо подключать через Trigger.
.

TiR

что-то я не соображу к чему триггер подключать и какие там настройки делать :-[
как там сейчас сделано - так при нажатии дверь не открывается, а дергается, если убрать триггер, то все норм, вот только дверь после нажатия кнопки возле нее становится автоматической до того времени, пока еще раз не нажать кнопку  ::)
подскажите, плиз, что-то я уже ничего не соображаю...

cashis

Я сделал чтобы при выполнении трёх условий кнопка нажималась:
1.Detect mouse collision
2.user input(mouse click)
3.value operator(get distanse(vector,vector)) EXPRESSION:A<1
и всё и терь только находясь рядом с ней по ней можно кликать.

Но больше всего меня волнует один вопрос который я задавал неоднократно и так и не получил ответ:
Как сделать так чтобы курсор мыши находился всегда точно в центре экрана(этот способ удобен и используется во всех экшенах)?

cashis

АУУУУ КТО ЗНАЕТ КАК ЗАБИТЬ ПОЗИЦИЮ КУРСОРА И ЧТОБ ОН НЕ ДВИГАЛСЯ

mistud

#20
Прикрути этот If к Start 3D Scene
Комментарий: работает только в полноэкранном режиме.

cashis

ОГРОМНОЕ ТЕБЕ СПАСИБО

cashis

#22
Возникла ещё одна проблема с интерактивностью:
Если я хоть каким нибудь способом прикручиваю DetectMouseCollision к DrawObject любого объекта он просто перестаёт работать, как только отключаю работает только так =((((((((
(уже и через Set Value и через IF пробовал, всё равно не фурычит)
Помогите чем можете !
Заранее Спасибо.

mixey

cashis, а я собственно не понял в чем проблема! Ты присоединяешь канал DetectMouseCollision (который реагируют на пересечение объекта с курсором) к параметру  DrawObject (который отвечает за прорисовку объекта на экране). Если значение этого параметра равно 0, то объект не рисуется, если 1, то рисуется. Поскольку изначально курсор объект не пересекает, то у тебя в DetectMouseCollision будет 0 и объект не будет виден. А еще ты не присоединил к DetectMouseCollision ничего, поэтому он у тебя всегда будет 0.

cashis

Цитата: mixey от 07 июля 2009, 22:14:43
cashis, а я собственно не понял в чем проблема! Ты присоединяешь канал DetectMouseCollision (который реагируют на пересечение объекта с курсором) к параметру  DrawObject (который отвечает за прорисовку объекта на экране). Если значение этого параметра равно 0, то объект не рисуется, если 1, то рисуется. Поскольку изначально курсор объект не пересекает, то у тебя в DetectMouseCollision будет 0 и объект не будет виден. А еще ты не присоединил к DetectMouseCollision ничего, поэтому он у тебя всегда будет 0.
Я это чисто схематически изобразил, вообще, я сейчас пытаюсь сделать инвентарь и для этого мне надо чтобы при клике на объект он пропадал, но одновременно появлялся в инвентаре, я сделал всё поидее как надо, но всё равно если хоть где-то присутствует DetectMouseCollision, то всё перестаёт работать.

Ruslan

#25
cashis
Сделай проще, введи дополнительную переменную(флаг), которая будет менять значение на 0 или 1(например 1 это означает, что объект попал в инвентарь) и переключай.
Наверное удобнее будет использовать массив(можно будет в цикле перебирать объекты и менять значения в массиве с индексом "номер объекта").

cashis

#26
Цитата: Ruslan от 08 июля 2009, 13:08:04
cashis
Сделай проще, введи дополнительную переменную(флаг), которая будет менять значение на 0 или 1(например 1 это означает, что объект попал в инвентарь) и переключай.
Ну тк я понимаю, это всё халява, этому учат на начальных уроках програмирования =))))) Я просто не могу заставить объект исчезать, а чтобы при клике объект появлялся в инвентаре, да это вообще легко сделать. Значит придётся пользоваться моей первой идеей, чтобы при клике на объект он менял положение (и таким образом уходил например глубоко под землю).

cashis

Ты похоже чё то не понял, и ты мне так объясняешь, как-будто я вообще дурак.
Я сделал так:
Если нажата кнопка мыши, курсор колизирует с объектом и объект виден, то он должен стать невидимым и одновременно становится видимым объект в инвентаре.
И обратное для объекта в инвентаре.

Ruslan

#28
если ты все уже сделал, то я не пойму в чем тогда проблема?
сделай два объекта(один в сцене отображается, другой в инвентаре) и включай-выключай их.

Viik

Получаеться что твой DetectMouseCollision используеться как флаг для объекта который он же проверяет. Чтобы DetectMouseCollision заработал нужно делать как Ruslan тебе и написал через сет валюе. Если объект не рисуеться (Draw object = 0) то и никакого детекта не будет. Поэтому когда к Draw object ты подключаеш DetectMouseCollision он и не работает, ему нечего детектить, он не видит объект, а объект невидим потому что не никакого детекта ;)