[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум Panda3D - по русски » Panda3D » Для начинающих » ДеЦЦкий сад "ПандЁнок"
ДеЦЦкий сад "ПандЁнок"
serg-kkzДата: Суббота, 15.10.2011, 00:07 | Сообщение # 211
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Quote (ninth)
Может выйти так, что ты не знаешь на каком уровне от корня находится требуемый объект, да и делать столь жёсткую привязку не слишком хорошо.

Жесткую привязку? ООП же!!! все должно быть как правильно. Родитель должен быть первым, а потом составные его.


ООП  -  
 
serg-kkzДата: Суббота, 15.10.2011, 00:15 | Сообщение # 212
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
А остальное искать поиском по ноду, можно прям в рендере искать.

ООП  -  
 
ninthДата: Суббота, 15.10.2011, 00:26 | Сообщение # 213
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Quote (serg-kkz)
Жесткую привязку? ООП же!!! все должно быть как правильно.

Ты тёплое с мягким не путай wink ООП здесь вообще никаким боком не стоит - это данные одного типа - граф сцены, имеющий фактически неограниченную вложенность. И заранее знать на каком уровне находится интересующий наз узел, а так же дочерний узел, вернувший результат коллизии не всегда возможно.
Затраты ресурсов на поиск будут несоизмеримо больше чем на работу с тэгом. Впрочем я уже сказал, что в данном конкретном случае можно попробовать обойтись и именем узла.
 
serg-kkzДата: Суббота, 15.10.2011, 00:38 | Сообщение # 214
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Quote (ninth)
Ты тёплое с мягким не путай ООП здесь вообще никаким боком не стоит - это данные одного типа - граф сцены, имеющий фактически неограниченную вложенность.

Граф сцены, не класс eek
Quote (ninth)
И заранее знать на каком уровне находится интересующий наз узел, а так же дочерний узел, вернувший результат коллизии не всегда возможно.

Это каким нужно быть раздолбаем чтоб потерять что-то в ООП.
Если садишь юнита в технику то.

рендер->техника->юнит

просто если кликнул по транспорту то юнит будет уже третьим, просто решается. Ноды именовать нужно с динамичным индексом по которому можно определить разложив на составные, юнит-тип


ООП  -  

Сообщение отредактировал serg-kkz - Суббота, 15.10.2011, 00:39
 
ninthДата: Суббота, 15.10.2011, 01:48 | Сообщение # 215
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Quote (serg-kkz)
Граф сцены, не класс

Нет. Граф - это граф. В данном случае - ациклический граф в качестве вершин/узлов которого выступают экземпляры одного и того же класса. Ни о какой иерархии, касающейся ООП здесь и речи быть не может.
Повторяю, не путай тёплое с мягким - разберись сначала что такое класс и что такое экземпляр класса. А заодно если не знаешь что такое граф - погугли, загляни в википедию или учебник по вышке.

Quote (serg-kkz)
Это каким нужно быть раздолбаем чтоб потерять что-то в ООП.

см. строчкой выше

Quote (serg-kkz)
рендер->техника->юнит

рендер->техника->реактивный миномёт->точка посадки водителя->водитель
рендер->техника->реактивный миномёт->точка посадки поворотной платформы->поворотная платформа->точка посадки наводчика->наводчик
 
ninthДата: Суббота, 15.10.2011, 02:17 | Сообщение # 216
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
К слову о жёстких привязках и тёплом с мягким - в теме, где обсуждалось ООП ты как раз опять делал жёсткую привязку класса к одному конкретному именованному экземпляру другого класса.
 
serg-kkzДата: Суббота, 15.10.2011, 13:19 | Сообщение # 217
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Принципы ООП заложены при работе с пандой в виде нодов как классов. Это и сделано специально, дабы создать объектную иерархию. И что-то потерять в ней это равносильно потерять созданный экземпляр класса.

Для начала создатели ООП дали бы вменяемое название такое: Шаблонное Программирование, ну и приписали, как-нибудь бы доблестное наследование и всякую белиберду типа: яблоки, груши.

Мне не нужно разбираться, что такое класс и экземпляр класса если:

Класс = шаблон
Объект = шаблон (результат работы шаблона)

Все-таки странно, что реализованный на C++ граф не является объектом - классом.

Нужно запастись переменными нужных срезов. В соответствии выбранного действия. Если кликнул по определенному транспорту для определенного действия, действие задается через выбор графического интерфейса. Скажем, кнопка посадить юнита в транспорт присваивает либо индекс, либо используем готовый срез. Так же если кликнули по технике не трудно догадаться, как определить тип... [2] и остальное уже от типа.


ООП  -  
 
serg-kkzДата: Суббота, 15.10.2011, 20:14 | Сообщение # 218
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
У меня идея к доработке моба. Если точки генерировать по результатам коллизии т.е с использованием луча для полученных координат. Можно получить что находится под лучем. Например булыжник, дом, или вода то точка игнорируется и создается другая. Так можно поднять интелект ai.

ООП  -  
 
ninthДата: Среда, 19.10.2011, 00:25 | Сообщение # 219
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Тогда надо проверять ещё и видимость между последней и предпоследней точкой, иначе упрётся в преграду и всё.
 
serg-kkzДата: Среда, 19.10.2011, 12:35 | Сообщение # 220
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Quote (ninth)
Тогда надо проверять ещё и видимость между последней и предпоследней точкой, иначе упрётся в преграду и всё.

Не понял.

Лучом проверять поверхность сверху. Вот если под сгенерированными координатами оказалась вода, дом, и пр. То выбрать соответствующее действие. Скажем, угодили в мешь который является водой, можно проигнорировать, т.к. в воду отправлять гнома не зачем. Но можно дать, как задание рыбачить или бежать домой за ластами smile


ООП  -  
 
ninthДата: Среда, 19.10.2011, 19:44 | Сообщение # 221
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Quote (serg-kkz)
т.к. в воду отправлять гнома не зачем

А если вода или камень окажется между двумя точками пути? Я вот о чём говорю.
 
serg-kkzДата: Среда, 19.10.2011, 20:37 | Сообщение # 222
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Ну, это уже другая проблема. Поиск пути. Можно так:

Можно в модели указать точки обхода, на которые будет перекидываться путь, если основной пересекся с препятствием. Насчет водоемом желательно их именовать для индикации если река, то у нее должна быть обозначена глубина и ширена. По которым можно определить пустить гнома вплавь или дать координаты ближнего моста, т.е. точки для перехода реки. Также если озеро то координаты лодки.
Прикрепления: 8987205.png (14.0 Kb)


ООП  -  
 
ninthДата: Четверг, 20.10.2011, 08:51 | Сообщение # 223
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Что-то вроде того. Одно следует за другим )
 
soosДата: Вторник, 08.11.2011, 17:04 | Сообщение # 224
Майор
Группа: Пользователи
Сообщений: 82
Награды: 1
Репутация: 0
Статус: Offline
Как заставить Node не наследовать Scale от reparent'а?
Есть перемещающийся и поворачивающийся персонаж, к нему привязан пустой Node, к пустому ноду привязана камера. Необходимо, чтобы пустой нод наследовал от персонажа только позицию, а камера наследовала от пустого нода только поворот.
 
serg-kkzДата: Вторник, 08.11.2011, 19:51 | Сообщение # 225
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Голову с наследованием не ломай. Тут легко сделать без ООП(апчех). Просто ноду каждый кадр устанавливай позицию, а камере поворот.

Code
Node.setPos(pers.getPos())
cam.setPhr(Node.getPhr())

Можешь только одну ось.

Code
cam.setR(Node.getR())


И нет проблем.


ООП  -  
 
Форум Panda3D - по русски » Panda3D » Для начинающих » ДеЦЦкий сад "ПандЁнок"
Поиск: