[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум Panda3D - по русски » Panda3D » Для начинающих » Получить родителя
Получить родителя
GogoДата: Среда, 25.08.2010, 23:15 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
патрон сталкивается с телом,в класе тела есть допустим параметр hp (здоровье),которое разумеется должно уменьшится после "столкновения" с пулей.Подскажите,как получить класс.

self.collsys.ShootHandler.getEntry(0).getIntoNodePath().getParent()

Только начал осваиваться в геймдеве. И код выше я так понимаю вернет мне саму родительскую модель,а как получить класс самой модели? Нужно делать что-то вроде реестра?

 
ninthДата: Четверг, 26.08.2010, 08:21 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
повесь на тело , в которое должна попадать пуля тэг
myModelNodePath.setTag("key","value")

проверка попадания

Code
  
np = self.collsys.ShootHandler.getEntry(0).getIntoNodePath()
if np.hasTag("key"):
     characters[np.hasTag("key")].hp -= damage

в данном случае characters - это словарь в котором хранятся твои тела с необходимыми параметрами.
 
GogoДата: Четверг, 26.08.2010, 12:25 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
Спасибо.Но..

Тел много,возможно ли к модели привязать её класс каким-либо способом?

 
ninthДата: Четверг, 26.08.2010, 13:18 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
Quote (Gogo)
Тел много

Ну а что мешает каждому телу назначить уникальное значение тэга. Например setTag("id","1") setTag("id","2") setTag("id","3") и т.д.

Quote (Gogo)
возможно ли к модели привязать её класс каким-либо способом?

Ты можешь наследовать свой класс тела от класса Actor или NodePath, но не всё так однозначно - актёр как и nodepath могут содержать множество дочерних узлов, а метод getIntoNodePath() возвращает именно тот, с которым было столкновение, т.е. например голову.
+ возвращается именно NodePath, а не класс-надстройка, так что надо писать дополнительную обработку или переопределять методы.

Другой вариант - включи nodepath как поле своего объекта, хотя от проблем с возвратом куска ты всё равно не избавишься.

Так что самый оптимальный вариант - работать с тэгами. Есть метод findNetTag("myTag"), который вернёт корневой (родительский) объект которому был назначен этот тэг

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

з.ы. в примере выше очепятка: вместо characters[np.hasTag("key")] надо characters[np.getTag("key")]

 
Форум Panda3D - по русски » Panda3D » Для начинающих » Получить родителя
Страница 1 из 11
Поиск: