собственно вопрос вот в чем, допустим я создал карту в 3d редакторе из десяти кубов, и загрузил её в свой проект( не важно куда, хоть в blitz3d, хоть в blitzmax(много существует framework'ов)) как мне обратиться например к 7 кубу из карты? по ключам, или(ну не знаю как это назвать, по параметрам которые я задаю им в самом 3d редакторе) для того чтоб можно было им управлять.
Сообщение отредактировал arrow25 - Понедельник, 16 Июля 2012, 06:19
собственно вопрос вот в чем, допустим я создал карту из десяти кубов, и загрузил её в свой проект( не важно куда, хоть в blitz3d, хоть в blitzmax(много существует framework'ов)) как мне обратиться например к 7 кубу из карты? по ключам, или(ну не знаю как это назвать, по параметрам которые я задаю им в самом 3d редакторе) для того чтоб можно было им управлять.
да, ты прав, это делается по ключам... если ты работаешь в Cartography Shop или 3D World Studio, то там это специально предусмотренно Blender 3D, Godot Engine, LUA
shizofren, ты не правильно меня понял ant0N, капетан очевидность? я знаю что они для этого предназначены, но я вроде спросил не об этом, а о том как к ним обратиться программно.
Animan2010, да причем тут кирпичи, кубы, и прочая ересь?), я не спрашиваю как мне из кубов, и кирпичей карту собрать, я это знаю сам. приведу другой пример например в 3dmax я из разных моделей собрал карту, и экспортировал её как цельный меш, но перед этим я всем объектам с которыми мне нужно будет как то взаимодействовать назначил некие теги, по которым можно обратиться уже в самом коде. собственно вопрос вот об этом, как? обратиться к ним.
по ключам, или(ну не знаю как это назвать, по параметрам которые я задаю им в самом 3d редакторе
ты спросил - я ответил
Добавлено (15.07.2012, 10:56) --------------------------------------------- я знаю что ты хочешь чтобы я написал код для управления объектами, но я блиц3д уже больше полу года не открывал, и никогда больше не открою Blender 3D, Godot Engine, LUA
Сообщение отредактировал ant0N - Воскресенье, 15 Июля 2012, 10:56
PointClass - стандартное ключевое слово редактора Cartography Shop и мы лишь указываем имя класса - Monster [50,255,50] - это цвета создаваемого объекта в формате RGB (в нашем случае - зеленый) [32,32] - размеры объекта (в нашем случае это кубик 32х32) name - имя монстра (или его тип), которое мы можем анализировать в игре. остальные параметры символизирует его статус и живой он или нет. Безусловно это слишком мало характеристик, которыми можно описать монстра в современной игре, поэтому Вы можете добавить другие, создающие полную картину для начальной инициализации монстра. Если вы находитесь в редакторе, то выйдите из него и снова войдите для вступления изменений в силу. Теперь в меню Objects появилось подменю user_obj, где находится созданный вам класс Monster. Если поместите его на карту, то он будет отображаться у вас в виде зеленого квадратика на проекциях и в виде зеленого куба на трехмерном виде:
Свойств объекта будут доступны при нажатии в редакторе клавиши "P" при выделенном объекте:
Само собой разумеется, что мы можем добавить другие свойства, какие нам необходимы. Теперь давайте посмотрим, как это работает в при загрузки карты в программу на Blitz3D. Добавьте пол к нашему уровню, чтоб кроме пользовательского объекта Monster на уровне было хоть что-то еще. Сохраните карту под именем addobj.csm. Воспользуйтесь шаблоном load_csm.bb и добавьте в него функции загрузки уровня, управления камерой (вобщем, все то что мы уже не раз проделывали для демонстрации загрузки и навигации по уровню .CSM) Теперь модифицируем секцию Point Entities в коде загрузки карты, следующим образом:
;Point Entities entitycount=ReadInt(f) DebugLog entitycount+" entities" For n=1 To entitycount visgroup=ReadInt(f); used to be flags, but wasn't really used group=ReadInt(f) properties$=readstringn(f) x#=ReadFloat(f) y#=ReadFloat(f) z#=ReadFloat(f) entity=CreatePivot(map) NameEntity entity,properties PositionEntity entity,x,y,z
Как вы уже догадались, все добавленные пользователем объекты попадают в раздел Point Entities где их можно анализировать и предпринимать определенные действия. В данном случае мы проанализировали свойство name объекта и когда программа нашла соответствие на заданное в редакторе имя (в нашем случае Toad) создаем обычный объект сфера, для индикации местоположения монстра. Безусловно в игре у вас будет гораздо большее количество объектов. Поэтому изначально нужно хорошо продумать их типизацию, все начальные свойства и параметры. Однако загрузка их и анализ в программу будет универсален. На месте сферы, безусловно мог быть добавлен любой объект и модель монстра в том числе вот почитай
Добавлено (15.07.2012, 11:09) --------------------------------------------- а для лидверкса нет смысла писать, у него же есть свой редактор
а для лидверкса нет смысла писать, у него же есть свой редактор
да есть, ну вот например смотри: я собрал там карту и в ней есть например некая капсула, которой я хотел бы управлять в самой игре. загрузил я карту, и как мне этой капсулой управлять, при нажатии каких то клавиш? или нужно это писать в свойствах самой капсулы еще в редакторе карт?
да есть, ну вот например смотри: я собрал там карту и в ней есть например некая капсула, которой я хотел бы управлять в самой игре. загрузил я карту, и как мне этой капсулой управлять, при нажатии каких то клавиш? или нужно это писать в свойствах самой капсулы еще в редакторе карт?
это делается так: поставил на карту какой-нибудь объект запомнил его имя в редакторе (например cube_1) и в коде пишешь
Code
cube = scene:GetKey("cube_1")
и теперь можешь им управлять PS. scene это переменная, которую ты присвоил загрузке карты
Code
scene = LoadMap("abstract::map.sbx")
Blender 3D, Godot Engine, LUA
Сообщение отредактировал ant0N - Понедельник, 16 Июля 2012, 10:25
Sd-team, странно что ты вообще существуешь еще на этом форуме.
Добавлено (18.07.2012, 15:35) --------------------------------------------- ant0N, спасибо, ты как всегда выручил) возьму на заметку это. но маленько не понятно что вернет эта функция?
Code
cube = scene:GetKey("cube_1")
если она вернет код нажатой клавиши, то мне к ней обратиться примерно так? (на синтаксис не обращай внимание)
Code
if cube == например клавише "w" then //как обратиться к его координатам?
если я правильно понял она вообще вернет истину, или лож
Добавлено (18.07.2012, 15:49) --------------------------------------------- не много вроде начинаю понимать этот синтаксис lua к координате x обращение такого вида?
Code
cube = scene:GetX("cube_1") /*так?, и если это так то сразу встречный вопрос)) можно ли как-то на пример все свойства конкретного объекта поместить куда-то?, например чтоб обращение к нему было таким*/ cube:x = 15
Сообщение отредактировал arrow25 - Среда, 18 Июля 2012, 15:36
не, ты не правильно понял :)... Та функция вернет объект.. Смотри, ты создал карту, назвал эту карту "test". Поставил на карту какой-то объект и назвал этот объект "cube_1" Теперь в скриптЭдиторе загружаешь эту карту
Code
scene = LoadScene("abstract::test.sbx")
теперь "вытаскиваем" наш объект из карты
Code
name = scene:GetKey("cube_1")
Далее можно писать код управления нашим объектом
В главном цикле:
Code
if KeyHit(KEY_W)==1 then MoveEntity (name,Vec3(0,0,1)) end
и тд..... надеюсь мысль понятна? кстати я свой сайт починил, может что полезного там найдешь Blender 3D, Godot Engine, LUA
Сообщение отредактировал ant0N - Среда, 18 Июля 2012, 17:18