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

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







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Логика > интерактивность
интерактивность
(Прочитано 29947 раз)
  1 2 [3]
Печать
cashis | **** | Старожил | Сообщений: 353 | «Ответ #30 08 Июля 2009, 15:17:53 »
Re: интерактивность |
30
Получаеться что твой DetectMouseCollision используеться как флаг для объекта который он же проверяет. Чтобы DetectMouseCollision заработал нужно делать как Ruslan тебе и написал через сет валюе. Если объект не рисуеться (Draw object = 0) то и никакого детекта не будет. Поэтому когда к Draw object ты подключаеш DetectMouseCollision он и не работает, ему нечего детектить, он не видит объект, а объект невидим потому что не никакого детекта Подмигивающий
ну тк ты смотрел мою вторую картинку? там ещё два условия кроме detectmousecollision, те два работают замечательно, а этот нет, ладно короче, буду разбираться.
P.S.:У меня итак используется флаг и на объекте в инвентаре и в мире, и я его изменяю уже от этих трёх условий, но из-за того что в этих условиях DetectMouseCollision он не пашет.
cashis | **** | Старожил | Сообщений: 353 | «Ответ #31 08 Июля 2009, 17:43:51 »
Re: интерактивность |
31
Короче я сделал =))))))
Я ещё хотел добавить чтобы был прицел, но почему-то при добавлении его перестовала работать "инвентарная система".
Вобщем вот: http://narod.ru/disk/10730297000/inventar.rar.html
Кто хочет может поковыряться. При желании мона добавить физику и чтобы объект появлялся перед тобой после выбрасывания, главное захотеть.
Спасибо за помощь (хоть я и сделал по своему)!!!
cashis | **** | Старожил | Сообщений: 353 | «Ответ #32 30 Июля 2009, 17:58:04 »
Re: интерактивность |
32
ЛЮДИ НЕУЖЕЛИ СОЗДАНИЕ ИНТЕРАКТИВНОСТИ В ИГРАХ ЭТО ТАКОЕ МУТОРНОЕ ДЕЛО ?
Я недавно начал генерировать идею и концепцию своей игры ( которую надеюсь сделаю ), и в процессе этого начал думать, как все эти идеи реализовывать в проекте. Я вообще хочу создать стелф-экшен и как в любой игре этого жанра существует огромный асортимент взаимодействий с врагом.
Например: Пристрелить, подкрасться сзади оглушить (или же воткнуть нож в спину, или же схватить, приставить нож к шее и начать допрос), срыгнуть на человека и при этом оглушить, переодеться в одежду врага (Привет Hitman`у, и слава богу мне это не нужно), вырвать за шиворот из окна и т.д.
Для каждого из этих движений нужно создавать кучу условий, которые будут состоять из огромных паутин каналов, но это всего один персонаж, один, но не бывает же игр где есть всего один враг! Ну допустим что врагов сто, мы создали условия для одного человека и теперь нам надо перенести их на отавшиеся 99, но как, неужели копировать? Так потом же придётся поновой присоединять ярлыки (если они использовались, т.к. я думаю что все известно, что при копировании каналов в квесте ярлыки исчезают). Да и представьте себе эту картину эти паутины каналов, сто ответвлений с сотнями нод, да в таких дебрях любой комп сдохнет, а уж а том как в этом разбираться я вообще молчу.
Ну так вот из всего этого рассказа следует что так просто это не делается, должна быть какая-то лазейка, чтобы облегчить себе жизнь.
Ну и вот мой вопрос: КАКАЯ ?
« Последнее редактирование: 30 Июля 2009, 17:59:48 от cashis »
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #33 30 Июля 2009, 19:31:28 »
Re: интерактивность |
33
Просто крик души, яхз  Веселый

Человечество уже давно столкнулось с проблемой которую ты описал. Для её решения было придумано разделение каких то данных от каких то операций с этими данными. А потом разделили эти самые операции на функции. И придумали такое понятие как "параметры функции" -- это такие данные, с помощью которых можно управлять тем как будет работать функция. С помощью параметров можно задавать какие данные и каким образом эта функция изменит.
В квесте немного размытое разделение на данные и на операции с этими данными. Очевидно что Value это данные, а Set Value это операция с некоторыми данными. Но для удобства сделали так чтобы Value всегда копировал себе то значение которое к нему присоеденино по чаилд линку. А SetValue умеет возвращять значение своего первого чаилда если к нему обратится как к данным. Это следующий после функций уровень абстракции -- объекты, структура которая объединяет в себе некоторые данные и некоторые функции которые могут работать с этими данными. Каждый ченел в квесте это объект, и чаилды это параметры основной функции объекта. Ну это всё как-то приближенно, в общих чертах. Речь не о ченелах, они просто как пример объектно ориентированого подхода.
Так вот, создавая функцию тебе важно выделять два основных момента -- параметры функции, и точка входа в функцию. Точка входа это грубо говоря тот ченел, линк на который ты потом будеш вызывать в разных местах. Параметрами чаще всего у тебя будут индексы в массивах. Массив это такое упорядоченое объединение однотипных структур данных. В качестве масива можно использовать не только квестовый Array, но и простой ченел свич Подмигивающий -- он даёт доступ к элементу массива по индексу, большего обычно и не надо. Но Array позволяет делать много чего другого, сортировку например, и имеет удобный интерфейс для просмотра из квестового редактора.
Итак обычно функция выглядит так: некий отдельный .cgr файл содержит в себе паблик ченел входа в функцию. Так же там есть несколько паблик ченелов которые работают параметрами. Когда вызывают функцию то сначала устанавливают параметры, с помощью того же Set Value например. А потом обращяются к точке входа. Частенько от точки входа требуется ещё и вернуть какое то значение, типа результат функции, тогда можно использовать ченел CallOnGetChild.
В принципе с помощью функций тебе станет уже легче обрабатывать много однотипных ситуаций. А с помощью квестового ОО можно добится ещё большего, но для начала рекомендую хорошо освоить написание функций.

П.С. мне кажется последние два поста уже не относятся к теме топика.
 
  1 2 [3]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Логика > интерактивность
Перейти в: