|
3D-программирование Вопросы, касающиеся программирования 3D мира |
16.04.2012, 17:49
|
#16
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Видимо, не дано мне этого понять...
Избежать использования Global к моделям врагов получилось с помощью Local, а вот игрок и камера...
if game=true
global player=CreateSphere()
........
endif
Я вот про это условие говорил...
|
(Offline)
|
|
16.04.2012, 18:19
|
#17
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Внедрение стартого меню
Сообщение от Devilox
Видимо, не дано мне этого понять...
Избежать использования Global к моделям врагов получилось с помощью Local, а вот игрок и камера...
if game=true
global player=CreateSphere()
........
endif
Я вот про это условие говорил...
|
это используется в цикле? Global-переменные можно объявлять только вне циклов и функций! Т.е. до цикла
...
Global player
Global enemy
global тряляля
...
а уже в цикле/функции:
...
if game=true
player=CreateSphere()
........
endif
...
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо St_AnGer за это полезное сообщение:
|
|
16.04.2012, 21:57
|
#18
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Спасибо, условие поставить получилось, но теперь Blitz не хочет загружать объекты, пишет Entity Does not exist, я сделал, вроде всё так...
Include "Constants.bb"
Include "Types.bb"
;--begin--;
Graphics3D 640,480,16,1
SetBuffer BackBuffer()
;--begin--;
;--objects--:
Global player
Global cam
Global shot1
Global shot2
Global shot_en1
Global enemy
Global enemy2
Global gun1
Global gun2
Global h_asp
Global pl_am
Global im_am
Global piv_fire
Global health_im
Global el_gun_ammo
Global pl_gun_ammo
Global gun_s1
;--objects--:
Global game%=0
Global update%=0
If game=0
cursor=LoadImage("textures\cursor.jpg")
MaskImage cursor,0,0,0
background=LoadTexture("menu.jpg")
back_box=CreateCube()
PositionEntity back_box,0,0,6
ScaleEntity back_box,7,5,0.1
EntityTexture back_box,background
cam2=CreateCamera()
light=CreateLight(cam2)
piv_ng=CreatePivot()
PositionEntity piv_ng,-2.75,0,4.77
ScaleEntity piv_ng,0.1,0.1,0.1
new_game=LoadMesh("models\menu\new game.3ds")
PositionEntity new_game,-3,0,5
ScaleEntity new_game,0.02,0.02,0.02
RotateEntity new_game,0,180,0
EntityPickMode new_game,2
NameEntity new_game,"ng"
EntityParent new_game,piv_ng
EndIf
If game=1
;--images--;
health_im=LoadImage("textures\health.bmp")
el_gun_ammo=LoadImage("textures\el_gun_ammo.bmp")
pl_gun_ammo=LoadImage("textures\pl_gun_ammo.bmp")
;--images--;
;--sounds--;
gun_s1=LoadSound("sounds\gun1.ogg")
;--sounds--;
;--sprites--;
shot1=LoadSprite("textures\shot1.bmp")
ScaleSprite shot1,3,3
EntityRadius shot1,1
EntityType shot1,TYPE_BULLET
HideEntity shot1
shot2=LoadSprite("textures\shot2.bmp")
ScaleSprite shot2,3,3
EntityRadius shot2,1
EntityType shot2,TYPE_BULLET
HideEntity shot2
shot_en1=LoadSprite("textures\shot3.bmp",2)
ScaleSprite shot_en1,5,5
EntityRadius shot_en1,5
EntityType shot_en1,TYPE_EN_BULLET
HideEntity shot_en1
;--sprites--;
;--main--;
pln=CreatePlane()
PositionEntity pln,0,-1,0
EntityType pln,TYPE_WALL
EntityColor pln,50,100,150
player=CreateSphere()
PositionEntity player,0,10,50
EntityRadius player,4
EntityType player, TYPE_PLAYER
EntityAlpha player,1
ScaleEntity player,1,1,1
TurnEntity player,0,180,0
cam=CreateCamera()
EntityParent cam,player
PositionEntity cam,0,5,0
enemy=LoadMesh("models\enemies\enemy1.3ds")
PositionEntity enemy,-5,10,-5
ScaleEntity enemy,0.5,0.5,0.5
MoveEntity enemy,-5,10,-5
EntityType enemy, TYPE_ENEMY
EntityRadius enemy, 4
enemy2=LoadMesh("models\enemies\enemy2.3ds")
PositionEntity enemy2,-5,10,-5
ScaleEntity enemy2,0.2,0.2,0.2
MoveEntity enemy2,-5,10,-5
box=CreateCube()
ScaleEntity box,20,20,2
TurnEntity box,0,90,0
PositionEntity box,70,0,80
EntityPickMode box,2
;--main--;
;--models--;
gun1=LoadMesh("models\level1\gun1.3ds")
ScaleEntity gun1,0.05,0.05,0.05
EntityParent gun1,cam
PositionEntity gun1,-1,-3,3
RotateEntity gun1,0,-90,0
HideEntity gun1
EntityOrder gun1,-1
gun2=LoadMesh("models\level1\gun2.3ds")
ScaleEntity gun2,0.05,0.05,0.05
EntityParent gun2,cam
PositionEntity gun2,-2,-7,0
RotateEntity gun2,0,-90,0
HideEntity gun2
EntityOrder gun2,-1
h_asp=LoadMesh("models\level1\health.3ds")
ScaleEntity h_asp,0.25,0.25,0.25
EntityType h_asp, TYPE_HEALTH
HideEntity h_asp
EntityFX h_asp,1
pl_am=LoadMesh("models\level1\pl_am.b3d")
ScaleEntity pl_am,0.1,0.1,0.1
EntityType pl_am, TYPE_PL_AMMO
EntityFX pl_am,1
HideEntity pl_am
im_am=LoadMesh("models\level1\im_am.b3d")
ScaleEntity im_am,0.1,0.1,0.1
EntityType im_am, TYPE_IMP_AMMO
PositionEntity im_am,5,1,5
EntityFX im_am,1
HideEntity im_am
;--models--;
;--pivots--;
piv_fire=CreatePivot()
EntityParent piv_fire,cam
PositionEntity piv_fire,-1.5,-1.5,8
;--pivots--;
;--collisions--;
Collisions TYPE_PLAYER, TYPE_WALL, 2, 3
Collisions TYPE_BULLET, TYPE_WALL, 2, 1
Collisions TYPE_BULLET, TYPE_ENEMY, 1, 1
Collisions TYPE_EN_BULLET, TYPE_PLAYER, 1, 1
;Collisions TYPE_EN_BULLET, TYPE_WALL, 2, 1
;--collisions--;
;--creations--;
CreateFirstAid()
CreateImpulseAmmo()
CreatePlasmaAmmo()
CreateEnemies(enemy)
;--creations--;
EndIf
;-------------------------------------------------------------
While Not KeyHit(1)
;-------------------------------------------------------------
If game=0
If EntityName(new_game)="ng"
If CameraPick(cam2,MouseX(),MouseY())
TurnEntity piv_ng,0,2,0
If MouseHit(1)
game=1
update=1
EndIf
Else
If EntityYaw(piv_ng)>0
TurnEntity piv_ng,0,-2,0
ElseIf EntityYaw(piv_ng)<0
TurnEntity piv_ng,0,2,0
EndIf
EndIf
EndIf
EndIf
If update=1
GameInput()
GameUpdate()
EndIf
UpdateWorld()
RenderWorld()
If update=1
GameDraw()
EndIf
DrawImage cursor,MouseX(),MouseY()
Flip
Wend
End
|
(Offline)
|
|
16.04.2012, 22:32
|
#19
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Внедрение стартого меню
в таких случаях надо выкладывать проект с файлами сюда, т.к. по одному коду трудно сказать на что конкретно блиц ругается. Твой проект никто в корыстных целях использовать явно не будет.
Вообще пишет что объект не найден, т.е. или файл не загрузился, или у тебя неправильно работает условие загрузки. На каком объекте ругается? Проверяй код, и правильно ли указаны пути в загрузках ентитей.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.04.2012, 22:39
|
#20
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Вот, загрузил...
Если загружать без условия, то всё нормально работает, при условии вылетает только на Update-ах, на простую загрузку объектов он не ругается...
|
(Offline)
|
|
17.04.2012, 04:42
|
#21
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Внедрение стартого меню
Не туда условия ставишь. Грузить надо всё это без условий, а уже в игровом цикле по условию делать то, что это условие предполагает.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.04.2012, 08:45
|
#22
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Внедрение стартого меню
Вот, чутка изменил твой код. Работает и правильно грузится. Вроде всё понятно, изменения увидишь сразу. От себя добавил только организацию меню. Опять таки грубый набросок, но работает как часы. Принцип понятен я думаю.
Game_ex.rar
Внимательно читай что тут тебе написали выше, я реализовал именно это.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо St_AnGer за это полезное сообщение:
|
|
17.04.2012, 17:29
|
#23
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Большое спасибо! Очень помогло!
P.S. только Blitz коллизии не считает при попадании пули во врага, с чем это может быть связано?
|
(Offline)
|
|
18.04.2012, 00:07
|
#24
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Внедрение стартого меню
Лучше пули не связывать с коллизией. А просчитывать ее как то математическим образом, по векторах чтоле.
Но если тебе хочется по проще, юзай команду LinePick. Или еще проще CameraPick - но этот оператор как я сам сегодня только убедился жрет ресурсов компа оч много. Поэтому я б вообще избегал ее применения. Ну разве что где производительность до одного места.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.04.2012, 05:12
|
#25
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Внедрение стартого меню
Сообщение от Devilox
Большое спасибо! Очень помогло!
P.S. только Blitz коллизии не считает при попадании пули во врага, с чем это может быть связано?
|
Значит пуля всё-таки не попадает во врага. Кстати, в предыдущей версии твоего кода работало ведь.
|
(Offline)
|
|
18.04.2012, 08:20
|
#26
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
В том-то и дело...
|
(Offline)
|
|
18.04.2012, 13:14
|
#27
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Внедрение стартого меню
Я посмотрел код который дал тебе St_AnGer. Выяснил, что у тебя не задана константа TYPE_ENEMY, добавь её.
По коду ещё: типы коллизий меняться не должны, так что лучше сделать их константами, чтоб случайно не изменить по ходу игры.
Const TYPE_ENEMY% = 8
и так далее для всех.
Попробуй среду разработки IDEal - http://www.fungamesfactory.com/, в ней необъявленные переменные подсвечиваются красным, если сделаешь опечатку то сразу увидишь (правда из инклудов константы красными показаны, но это мелочь всё равно).
Ещё в главном цикле проверка состояний через Select... Case со строковым значением, а сравнение строк медленнее чем чисел, хоть и удобнее читать, хотя при наличии констант читается тоже удобно:
Const STATE_MENU_LOAD% = 1
Const STATE_GAME% = 2
......
Global gameState% = STATE_MENU_LOAD
......
Select gameState
Case STATE_MENU_LOAD
;грузим меню
Case STATE_GAME
;идёт игра
End Select
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Жека за это полезное сообщение:
|
|
19.04.2012, 15:52
|
#28
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Спасибо, работает
|
(Offline)
|
|
19.04.2012, 17:59
|
#29
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Внедрение стартого меню
Сообщение от Жека
Попробуй среду разработки IDEal - http://www.fungamesfactory.com/, в ней необъявленные переменные подсвечиваются красным, если сделаешь опечатку то сразу увидишь (правда из инклудов константы красными показаны, но это мелочь всё равно).
|
Ого. Отличная штука. Не знал про ее существование, только когда то юзал протеан, но не помню уже почему перестал.
По этому поводу возник вопрос. Я например когда печатаю Graphics3d оператор, мне IDE подсвечивает варианты, но это происходит на долю секунд. Я пробую успеть за это время 2-3 раза нажать вниз что б выбрать именно оператор Graphics3d и когда жму Enter, то ничего не происходит, просто курсор опускается вниз на 1 строку. Как правильно воспользоваться, или настроить это всплывающее меню?
п.с. А то что переменные из инклудов не подсвечиваются действительно не очень. Может можно эти переменные из инклуда вставить в главный файл и добавить их в какой то искусственно созданный "Плюсик"(тот что может скрывать весь код функции в 1-ну строку, только сделать то же самое с кучей мешающих Global и Const)
|
(Offline)
|
|
20.04.2012, 06:17
|
#30
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Внедрение стартого меню
Randomize рекомендовал кому-то эту ИСР IDE, от него я узнал.
Я как только поставил и попробовал писать, понял что что-то не так как везде. Прошарил все настройки, чтобы посмотреть какие есть возможности и чтобы понять как автоподстановку вызвать и настроить мелочи. Вызов автоподстановки - Alt+Space. Выбор выделенной строки из списка подстановки: Tab.
Ещё крутые вещи в IDEal:
- работа с типами, ставишь "\" и он тебе все поля типа показывает в списке подстановки.
- автоподстановка своих функций и типов
Из минусов:
- не работает копировать/вставить через Ctrl+Ins / Shift+Ins, а я привык к ним.
Я отказался от использования инклудов, они мне не нужны (интересно, когда только начинал кодить в блитце использовал их) - парсер кода справляется с большим количеством строк + сворачиваемость функций в линию + навигация через Code Explorer.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:44.
|