![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#111 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
![]()
Во втором уровне почему-то исчезают текстуры, если уехать далеко от начала. Это связано с тем, что я рисую закрашенный прямоугольник на весь экран (для эффекта затемнения), потому что когда убираю этот прямоуг, все рисуется норм. Я вообще запутался с этой функцией PR2D_RECT, чего она хочет?
Не стыдно не уметь, стыдно не учиться.
Последний раз редактировалось Андрей 93; 20.04.2010 в 14:55. |
![]() |
![]() |
![]() |
#112 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]()
Она ничего не хочет. Ты где-то намудрил. Хочешь помощи сделай демку с проблемой и показывай код. Процедура то везде корме этого места нормально работает.
|
![]() |
![]() |
![]() |
#113 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
![]()
А чем моя игра не демка?
![]() Код:
Я заметил, что текстуры пропадают только при условии, если спрайт фона находится за пределами экрана. Поэтому я сделал фон на весь уровень, это всё равно необходимо. Вопрос закрываю
Не стыдно не уметь, стыдно не учиться.
Последний раз редактировалось Андрей 93; 21.04.2010 в 13:54. |
![]() |
![]() |
![]() |
#114 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
![]()
Как очистить все переменные модуля? По порядку один за другим, или можно как-то по-другому? Просто в этом модуле (в нем выполняется создание карты и обработка всей физики) глобальные переменные остаются после закрытия уровня, а при загрузке другого уровня в массивах остаются объекты (касаемо только статичных массивов). Была мысль все массивы сделать динамическими, но все же хочется как-то чистить все переменные, будто модуль подключен заново (как бы глупо это ни звучало).
Не стыдно не уметь, стыдно не учиться.
|
![]() |
![]() |
![]() |
#115 | |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]() Цитата:
Не особо понял в чем проблема, показывай код. |
|
![]() |
![]() |
![]() |
#116 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
![]()
Это типы кнопки и двери:
Код:
Код:
Код:
При закрытии уровня все физ. тела удаляются (cpSpaceClear), но остаются массивы и переменные, показывающие кол-во элем. массива, поэтому даже в другом уровне эти физически несуществующие двери и кнопки будут рисоваться. Надо переводить doors и but_arr в дин. массивы. В моём случае использование указателей не обязательно, вся работа с этими данными находится в 1 модуле. А способ хранения данных в чипманке является предком динамических массивов, т.е. в принципе, то же самое
Не стыдно не уметь, стыдно не учиться.
Последний раз редактировалось Андрей 93; 22.04.2010 в 10:50. |
![]() |
![]() |
![]() |
#117 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
![]()
Сделал массивы динамическими и все заработало нормально.
![]()
Не стыдно не уметь, стыдно не учиться.
|
![]() |
![]() |
![]() |
#118 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]()
Научись более рационально подходить к коду. Делай каждый тип независимым, со своими процедурами (работать с типом нужно (желательнее) не в коде самой игры, а через эти процедуры). Храни данные физики в типе, сам тип желательно делать указателем (это не обязательно, но помогает).
То есть "правильнее" делать примерно так (пример типа для объекта уровня): Код:
Для еще лучшей организации кода можно сделать тип уровня: Код:
Код:
TGameLevel->TDynObj->ChipmunkBody .............//->TGameButton->ChipmunkBody .............//->TGameDoor Каждый тип ссылается (через переменную указатель) или содержит (в себе) подчиненный тип, и управляет им. Например тип уровня имеет процедуру DrawLevel, она в свою очередь вызывает отрисовку всех объектов по очереди процедурой DrawObject (то есть уровень управляет подчиненными ему объектами, то же самое с обработкой и удалением). Еще удобство метода в том, что можно хорошо разделить код на модули (Levels.pas,DynObjects.pas итд), и они будут ссылаться друг на друга. Код не будет в одной куче. Основной модуль освободится от всяких кусков кода типа: Код:
Код:
![]() ![]() P.S. Ты сам фон для уровня нарисовал? P.P.S. Пропадают текстуры как только перестает видится фон. Попробуй убрать Код:
Код:
Последний раз редактировалось Вадим Буренков; 22.04.2010 в 16:56. |
![]() |
![]() |
![]() |
#119 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
![]()
Разложить код по полочкам руки не доходят, да и не за чем это пока кода мало. Я ещё не запутываюсь. Когда-нибудь займусь этим. Фон рисовал сам, так же как и все остальное.
Насчет затемнения: если совсем уберу будут какие-то некрасивые переходы, в начале у меня была мысль сделать как будто шторки фотоаппарата закрываются (просто сужение круга, а за пределами круга чернота), только это для меня сложно. А если поставить условие if effect_alpha<>0, то текстуры всё равно пропадут, когда начнется затемнение, так что легче сделать картинку фона побольше, чтобы всё охватывала, или же изменять её координаты относительно камеры не как cam.x/5 и cam.y/5, а как cam.x/7 и cam.y/7
Не стыдно не уметь, стыдно не учиться.
|
![]() |
![]() |
![]() |
#120 | |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]() Цитата:
Сделай отдельную демку с переходом где видна проблема и выложи сюда ее код. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Физика в 2D играх | Вадим Буренков | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 32 | 02.11.2010 22:00 |
Искуственый интелект в играх | VintProg | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 26 | 01.08.2009 23:09 |
Сюжет в 2D играх | ZotaC | Свободное общение | 8 | 05.07.2009 15:42 |
Физика программы. | Манжосов Денис :) | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 1 | 09.05.2008 18:14 |
Анимация в играх | frai | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 25.11.2007 14:28 |