Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 22.05.2009, 12:34   #1
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Управление переименованными чайлдами

Допустим есть анимированный юнит, и кликнув на него я хочу чтобы высвечивалось имя юнита. Я сделал перебор чайлдов меша и каждому присвоил имя "Unit01".

Но в то же время хочется сохранить возможность управлять отдельными чайлдами, поскольку быстрее написать в блице FindChild-TurnEntity, чем переэкспортировать всю модель...а при загрузке модели все имена уже заменились на "Unit01"...и как совместить эти две функции, переименования и в то же время управления ?

Можно конечно выбирать юнит по сфере, а чайлдами управлять по изначальным именам, но меня интересует как сделать вариант с пополигонным пиком.
(Offline)
 
Ответить с цитированием
Старый 22.05.2009, 12:50   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Управление переименованными чайлдами

задать составное имя:
Unit01:turret
Unit01:tits
Unit01:wheel0

например.

хотя лучше всего хранить в имени хендл на елемент типа юнита. и уже в типе хранить все что нужно.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
karry (22.05.2009)
Старый 22.05.2009, 13:16   #3
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Управление переименованными чайлдами

хотя лучше всего хранить в имени хендл на елемент типа юнита. и уже в типе хранить все что нужно.
Элемент типа - это что имеется в виду ? Типы у меня в голове пока не очень укладываются.
(Offline)
 
Ответить с цитированием
Старый 22.05.2009, 13:19   #4
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Управление переименованными чайлдами

Ну вот опять)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо MiXaeL за это полезное сообщение:
ABTOMAT (24.05.2009), impersonalis (22.05.2009)
Старый 22.05.2009, 13:26   #5
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Управление переименованными чайлдами

Ну да, я вообще в типах не шарю, а ты тут кидаешь пост о продвинутой работе с типами; очень, блин, полезно.
(Offline)
 
Ответить с цитированием
Старый 22.05.2009, 13:35   #6
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Управление переименованными чайлдами

Не о продвинутой работе, а просто про хендлы, о которых и говорил Холи.
Кстати, в том же FAQ есть вот это
А еще можно заглянуть в хелп и пример Castle. Я на нем типы выучил.

Последний раз редактировалось MiXaeL, 22.05.2009 в 13:42. Причина: очептяки, блин)
(Offline)
 
Ответить с цитированием
Старый 22.05.2009, 14:28   #7
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Управление переименованными чайлдами

Ну если не хендл, раз с типами сложно, то номер переменных в массивах.
Т.е. создай массивы
Dim Name$(n)
Dim UnitEnt(n)
Dim Life(n)
а в имена пиши n.
Хотя типы надо знать конечно.
(Offline)
 
Ответить с цитированием
Старый 23.05.2009, 04:18   #8
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Управление переименованными чайлдами

Кстати, обнаружил что рекурсии, для обращения к LoadAnimMesh, абсолютно не нужны. Нужно только весь анимированный меш поместить под общего родителя в редакторе, и всё прекрасно работает точно так же как и с LoadMesh, и текстуры накладываются одной командой, и альфа меняется для всех сразу, и всё остальное.
(Offline)
 
Ответить с цитированием
Старый 23.05.2009, 13:15   #9
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Управление переименованными чайлдами

Кстати, в том же FAQ есть вот это
Ужас, кстати. В хелпе о типах написано раз в пятьдесят более внятно. Это только так кажется, что кто угодно может написать разъяснение к какой-то вещи, и кто угодно прочитав это разъяснение обязан его понять. Тем кто пишет учебники деньги не зря платят.
(Offline)
 
Ответить с цитированием
Старый 23.05.2009, 16:29   #10
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Управление переименованными чайлдами

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

А, вот, как проверить принадлежит ли какая-нибудь Entity определенному типу ? Допустим клик на объект, затем распознавание типа объекта, например "свой-чужой-нейтрален", и в зависимости от этого производить действия.
Допустим у меня стоит в типе "Field loyalty=enemy", но как узнать существует ли в выбранном типе такое поле ? Опять же надо как-то узнать принадлежит ли объект к типу вообще, или просто одинокий Entity.
(Offline)
 
Ответить с цитированием
Старый 23.05.2009, 20:25   #11
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Управление переименованными чайлдами

Для этого записываешь в имя ентити хендл на его тип. Затем когда выбираешь ентити, читаешь хендл на тип из его имени и получаешь доступ к полям типа, вот так:
NameEntity b\entity, Handle(b)
....
pick = CameraPick(camera, mx, my)
If Pick <> 0 Then
b.bot = Object.Bot(EntityName(Pick))
If b <> Null Then
;-- Обработка событий
Select b\loyalty
case Svoi
///////
case Chujoi
///////
case Neitral
///////
End Select
EndIf
EndIf
(Offline)
 
Ответить с цитированием
Старый 23.05.2009, 20:38   #12
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Управление переименованными чайлдами

H@NON
Вот ты пишешь :
b.bot = Object.Bot(EntityName(Pick))
То есть подразумевается что ты кликаешь на тип .bot.
а если у меня десять типов ? И у всех свои уникальные поля.
Тип здание, тип ёлка, тип камень, мало ли, как тогда ?

А для узкого применения способ наверное хороший.
(Offline)
 
Ответить с цитированием
Старый 23.05.2009, 21:47   #13
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Управление переименованными чайлдами

Для выбора из нескольких типов конструкция примет такой вид:
b.bot = Object.Bot(EntityName(Pick))
If b <> Null Then
....
else
      t.turrel = Object.turrel(EntityName(Pick))
      If t <> Null Then
      ....
      else
            u.unit = Object.unit(EntityName(Pick))
            If u <> Null Then
            ......
            else
                  bs.boss = Object.Boss(EntityName(Pick))
                  If bs <> Null then
                  ........
                  EndIf
            EndIf
      EndIf
EndIf
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
karry (24.05.2009)
Старый 23.05.2009, 22:47   #14
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Управление переименованными чайлдами

Погоди-погоди...
дай-ка вкурить...

Поправьте меня если я где-то ошибаюсь.
-Вот я назначаю хэндл на имя меша, фактически.
-Затем делаем пик на меше.
-Проверяем существует ли объект.
-Назначаем временную переменную, присваиваем ей первый попавшийся тип, и выполняем команду Object этого же типа от пикнутого имени.
-Если тип временной переменной совпадает с Object от пикнутого - выполняем дальше, если нет - Object возвращает 0, выполняем Else.

Я верно понимаю ?
(Offline)
 
Ответить с цитированием
Старый 23.05.2009, 23:56   #15
karry
Нуждающийся
 
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений
(для 10 пользователей)
Ответ: Управление переименованными чайлдами

Хм, так вот, быть может я и не полностью понимаю как, но оно работает, за одним исключением :
Я поставил в сцену шарик не принадлежащий ни одному из типов, и вывожу содержание любого случайного поля любого типа - Text 20,20,unit\blabla, так вот если кликнуть на одиноко стоящий Entity "безтипного" шарика, то программа валится по причине несуществования unit\blabla. Можно конечно и не выводить этот текст, или не присваивать чему попало PickMode 2, но не грозит ли это какими-нибудь непредвиденными осложнениями в дальнейшем ?

Поправка : любые операции вне цикла с Object - валят программу по причине несуществования.

Последний раз редактировалось karry, 24.05.2009 в 00:51.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление KingMaks Blitz3D 4 27.11.2009 01:56
Проблемка с чайлдами LD 3D-программирование 13 28.02.2008 20:19
управление в RPG JeSss 3D-программирование 37 16.01.2008 18:46


Часовой пояс GMT +4, время: 18:13.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com