|
3D-программирование Вопросы, касающиеся программирования 3D мира |
22.05.2009, 12:34
|
#1
|
Нуждающийся
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений (для 10 пользователей)
|
Управление переименованными чайлдами
Допустим есть анимированный юнит, и кликнув на него я хочу чтобы высвечивалось имя юнита. Я сделал перебор чайлдов меша и каждому присвоил имя "Unit01".
Но в то же время хочется сохранить возможность управлять отдельными чайлдами, поскольку быстрее написать в блице FindChild-TurnEntity, чем переэкспортировать всю модель...а при загрузке модели все имена уже заменились на "Unit01"...и как совместить эти две функции, переименования и в то же время управления ?
Можно конечно выбирать юнит по сфере, а чайлдами управлять по изначальным именам, но меня интересует как сделать вариант с пополигонным пиком.
|
(Offline)
|
|
22.05.2009, 12:50
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Управление переименованными чайлдами
задать составное имя:
Unit01:turret
Unit01:tits
Unit01:wheel0
например.
хотя лучше всего хранить в имени хендл на елемент типа юнита. и уже в типе хранить все что нужно.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.05.2009, 13:16
|
#3
|
Нуждающийся
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений (для 10 пользователей)
|
Ответ: Управление переименованными чайлдами
хотя лучше всего хранить в имени хендл на елемент типа юнита. и уже в типе хранить все что нужно.
|
Элемент типа - это что имеется в виду ? Типы у меня в голове пока не очень укладываются.
|
(Offline)
|
|
22.05.2009, 13:19
|
#4
|
Бывалый
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений (для 267 пользователей)
|
Ответ: Управление переименованными чайлдами
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо MiXaeL за это полезное сообщение:
|
|
22.05.2009, 13:26
|
#5
|
Нуждающийся
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений (для 10 пользователей)
|
Ответ: Управление переименованными чайлдами
Ну да, я вообще в типах не шарю, а ты тут кидаешь пост о продвинутой работе с типами; очень, блин, полезно.
|
(Offline)
|
|
22.05.2009, 13:35
|
#6
|
Бывалый
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений (для 267 пользователей)
|
Ответ: Управление переименованными чайлдами
Не о продвинутой работе, а просто про хендлы, о которых и говорил Холи.
Кстати, в том же FAQ есть вот это
А еще можно заглянуть в хелп и пример Castle. Я на нем типы выучил.
Последний раз редактировалось MiXaeL, 22.05.2009 в 13:42.
Причина: очептяки, блин)
|
(Offline)
|
|
22.05.2009, 14:28
|
#7
|
Знающий
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений (для 133 пользователей)
|
Ответ: Управление переименованными чайлдами
Ну если не хендл, раз с типами сложно, то номер переменных в массивах.
Т.е. создай массивы
Dim Name$(n)
Dim UnitEnt(n)
Dim Life(n)
а в имена пиши n.
Хотя типы надо знать конечно.
|
(Offline)
|
|
23.05.2009, 04:18
|
#8
|
Нуждающийся
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений (для 10 пользователей)
|
Ответ: Управление переименованными чайлдами
Кстати, обнаружил что рекурсии, для обращения к LoadAnimMesh, абсолютно не нужны. Нужно только весь анимированный меш поместить под общего родителя в редакторе, и всё прекрасно работает точно так же как и с LoadMesh, и текстуры накладываются одной командой, и альфа меняется для всех сразу, и всё остальное.
|
(Offline)
|
|
23.05.2009, 13:15
|
#9
|
Нуждающийся
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений (для 10 пользователей)
|
Ответ: Управление переименованными чайлдами
Кстати, в том же FAQ есть вот это
|
Ужас, кстати. В хелпе о типах написано раз в пятьдесят более внятно. Это только так кажется, что кто угодно может написать разъяснение к какой-то вещи, и кто угодно прочитав это разъяснение обязан его понять. Тем кто пишет учебники деньги не зря платят.
|
(Offline)
|
|
23.05.2009, 16:29
|
#10
|
Нуждающийся
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений (для 10 пользователей)
|
Ответ: Управление переименованными чайлдами
Переписываю программку под типы...вроде удобнее, но с другой стороны переменных получается в два-три раза больше чем без типов.
А, вот, как проверить принадлежит ли какая-нибудь Entity определенному типу ? Допустим клик на объект, затем распознавание типа объекта, например "свой-чужой-нейтрален", и в зависимости от этого производить действия.
Допустим у меня стоит в типе "Field loyalty=enemy", но как узнать существует ли в выбранном типе такое поле ? Опять же надо как-то узнать принадлежит ли объект к типу вообще, или просто одинокий Entity.
|
(Offline)
|
|
23.05.2009, 20:25
|
#11
|
Дэвелопер
Регистрация: 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
|
Нуждающийся
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений (для 10 пользователей)
|
Ответ: Управление переименованными чайлдами
H@NON
Вот ты пишешь :
b.bot = Object.Bot(EntityName(Pick))
То есть подразумевается что ты кликаешь на тип .bot.
а если у меня десять типов ? И у всех свои уникальные поля.
Тип здание, тип ёлка, тип камень, мало ли, как тогда ?
А для узкого применения способ наверное хороший.
|
(Offline)
|
|
23.05.2009, 21:47
|
#13
|
Дэвелопер
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.05.2009, 22:47
|
#14
|
Нуждающийся
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений (для 10 пользователей)
|
Ответ: Управление переименованными чайлдами
Погоди-погоди...
дай-ка вкурить...
Поправьте меня если я где-то ошибаюсь.
-Вот я назначаю хэндл на имя меша, фактически.
-Затем делаем пик на меше.
-Проверяем существует ли объект.
-Назначаем временную переменную, присваиваем ей первый попавшийся тип, и выполняем команду Object этого же типа от пикнутого имени.
-Если тип временной переменной совпадает с Object от пикнутого - выполняем дальше, если нет - Object возвращает 0, выполняем Else.
Я верно понимаю ?
|
(Offline)
|
|
23.05.2009, 23:56
|
#15
|
Нуждающийся
Регистрация: 19.05.2009
Сообщений: 82
Написано 8 полезных сообщений (для 10 пользователей)
|
Ответ: Управление переименованными чайлдами
Хм, так вот, быть может я и не полностью понимаю как, но оно работает, за одним исключением :
Я поставил в сцену шарик не принадлежащий ни одному из типов, и вывожу содержание любого случайного поля любого типа - Text 20,20,unit\blabla, так вот если кликнуть на одиноко стоящий Entity "безтипного" шарика, то программа валится по причине несуществования unit\blabla. Можно конечно и не выводить этот текст, или не присваивать чему попало PickMode 2, но не грозит ли это какими-нибудь непредвиденными осложнениями в дальнейшем ?
Поправка : любые операции вне цикла с Object - валят программу по причине несуществования.
Последний раз редактировалось karry, 24.05.2009 в 00:51.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
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.
|