Пятница, 15 Ноября 2024, 21:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (Game Maker)
LuxorixДата: Пятница, 20 Марта 2015, 08:03 | Сообщение # 5301
постоянный участник
Сейчас нет на сайте
У меня уже мозг плывет. Попробовал сделать так:
Код
{
     for (i=0; i<instance_count; i+=1) // перебираем все объекты
     {
     iii = instance_id[i];
     if (iii.object_index=objVirus) // если нужный нам объект вирус, то проверяем
       if (iii.activ>0) // активен ли он
       {if collision_circle(x,y,64,iii,0,1) lock=1 else lock=0;} // если активен, то проверяем рядом ли он, если да то блокируемся если нет то разблокируемся
      
}
}


В чем проблема этого кода. Когда враг уничтожен то с клеток не снимается блокировка. Если появляется новый активный враг, то клетки вокруг него блокируется, а все остальные на карте разблокируются. Есть у кого-нибудь пример нормальной работы с сетками или чтобы перебирались объекты нормально. В этом примере вроде бы проблема в том, что после удаления объекта он не удаляется из массива, а как его удалить я не знаю.


LUXORIX GAMES
YellowAfterlifeДата: Суббота, 21 Марта 2015, 16:37 | Сообщение # 5302
Сейчас нет на сайте
Цитата Luxorix ()
У меня уже мозг плывет. Попробовал сделать так:

В чем проблема этого кода. Когда враг уничтожен то с клеток не снимается блокировка. Если появляется новый активный враг, то клетки вокруг него блокируется, а все остальные на карте разблокируются. Есть у кого-нибудь пример нормальной работы с сетками или чтобы перебирались объекты нормально. В этом примере вроде бы проблема в том, что после удаления объекта он не удаляется из массива, а как его удалить я не знаю.
Это очень странный код. Насколько часто он выполняется и из клеток ли вовсе?
Приведенное в нем "lock = 1 else lock = 0" подозревается в поломке выполнения при наличии более чем одного врага на карте.
По меньшей мере стоит делать

Ну или даже так (зачем перебирать все объекты?):


LuxorixДата: Суббота, 21 Марта 2015, 19:36 | Сообщение # 5303
постоянный участник
Сейчас нет на сайте
YellowAfterlife, спасибо большое за помощь, я ждал ваш комментарий, уже было собирался писать в личку, но сегодня утром, о чудо у меня получилось))

Я создал список, в который добавляются все АКТИВНЫЕ вирусы. Клетка проверяет есть ли хоть один вирус из списка рядом, если есть - блокируется и перестает их проверять. Когда вирус умирает он удаляется себя из списка, клетки пересчитываются.

Но ваш вариант мне тоже нравится. Я его тоже проверю. СПАСИБО!


LUXORIX GAMES
hmprДата: Среда, 25 Марта 2015, 18:51 | Сообщение # 5304
частый гость
Сейчас нет на сайте
Товарищи!!! скажите пожалуйста, кто-нибудь, где-нибудь, когда-нибудь находил какие-нибудь статьи по работе с физикой в GMS кроме этой http://gamesmaker.ru/konstruktory-igr/game-maker/fizika/? интересуют статьи с описаниями функций GMS для работы с Box2D. Если да, то кто?, где? и когда? Спасибо
Banan4ikДата: Среда, 25 Марта 2015, 20:21 | Сообщение # 5305
частый гость
Сейчас нет на сайте
Бьюсь с этими таймлайнами, как сделать чтобы каждую секунду срабатывало событие. Я так понимаю, одна секунда - это 30 кадров (по стандарту).
Это делается через таймлайн, таймер или все проще?


I dance only with russians.
YellowAfterlifeДата: Среда, 25 Марта 2015, 20:37 | Сообщение # 5306
Сейчас нет на сайте
Цитата Banan4ik ()
Бьюсь с этими таймлайнами, как сделать чтобы каждую секунду срабатывало событие. Я так понимаю, одна секунда - это 30 кадров (по стандарту).
Это делается через таймлайн, таймер или все проще?

Для такого используют alarm'ы. Timelines больше рассчитаны на серии событий, что происходят один раз. Можно, конечно, "зациклить" timeline кодом, но при одном действии это лишь лишние хлопоты.
Цитата

Information about object: obj_example

Create Event:
Код
alarm[0] = 30 // время до первого срабатывания


Alarm 0:
Код
// [выполнить действия]
alarm[0] = 30 // время до следующего срабатывания



Banan4ikДата: Среда, 25 Марта 2015, 20:44 | Сообщение # 5307
частый гость
Сейчас нет на сайте
ООО, спасибо! Все работает!
Пользуясь случаем, ты же автор Terrasavr, или я что-то путаю?


I dance only with russians.
YellowAfterlifeДата: Четверг, 26 Марта 2015, 10:41 | Сообщение # 5308
Сейчас нет на сайте
Цитата Banan4ik ()
ООО, спасибо! Все работает!
Пользуясь случаем, ты же автор Terrasavr, или я что-то путаю?
Верно.
Занимаюсь различным времяпрепровождением, в общем-то говоря.


t111Дата: Вторник, 31 Марта 2015, 10:33 | Сообщение # 5309
почетный гость
Сейчас нет на сайте
Привет всем! Я редко когда делаю платформеры, но щас вот решил. Мучает один вопрос, почему не работает функция object set mask? Просто дело в чем, спрайты игрока разных размеров при ходьбе и при беге, а когда присидает, так вообще! После присида например если сразу встать и пойти, то спрайт ходьбы застривает в земле. Можно решить проблему с помощью установки маски для целого объекта, например маску стоячего спрайта! Но тогда при присиде или при прыжке эффект не тот, например пули которые летят в объект, если от них уклониться присев, всё равно в него попадают, потомучто маска стоячего спрайта. Так вот, хотел сделать чтобы при нажатии клавиши вниз, когда игрок садится, менялась маска у объекта на спрайт соответствующий, а когда вставал и шел, также менялась, тогда не будет разных проблем. Но вот функция не работает, как быть?

как известно, встречают по
одежке, а провожают
uninstall'ом"

YellowAfterlifeДата: Вторник, 31 Марта 2015, 11:03 | Сообщение # 5310
Сейчас нет на сайте
Цитата t111 ()
Мучает один вопрос, почему не работает функция object set mask?

Нужно присваивать новый индекс маски в mask_index, к примеру,
mask_index = spr_player_mask
а не через object_set_mask, что лишь меняет маску для новых созданных экземпляров.


t111Дата: Среда, 01 Апреля 2015, 13:15 | Сообщение # 5311
почетный гость
Сейчас нет на сайте
YellowAfterlife, да, точно! Спасибо! +

Добавлено (01 апреля 2015, 13:15)
---------------------------------------------
Как мне сделать чтобы персонаж (объект) мог запрыгивать на платформы сквозь них. Ну Тоесть платформа над его головой, я жму пробел, он прыгает вверх и оказывается на платформе и не падает. Как в сеговских играх?


как известно, встречают по
одежке, а провожают
uninstall'ом"

Fill_FreemanДата: Среда, 01 Апреля 2015, 18:17 | Сообщение # 5312
почетный гость
Сейчас нет на сайте
t111, Я делал это проверкой направления. Когда персонаж движется вверх, то платформа не тормозит его. А если вниз то останавливает.
Только сразу обрати внимание на случай, когда перс натыкается на платформу сбоку. Прыгая проблем быть не должно быть, А вот если он будет падать, то застрянет в середине. По этой причине и код не привожу, потому что у меня там были еще те костыли ((=




Сообщение отредактировал Fill_Freeman - Среда, 01 Апреля 2015, 18:26
skypoДата: Пятница, 03 Апреля 2015, 23:33 | Сообщение # 5313
участник
Сейчас нет на сайте
Цитата t111 ()
Ну Тоесть платформа над его головой, я жму пробел, он прыгает вверх и оказывается на платформе и не падает. Как в сеговских играх?

как вариант учитывать коллизию только с платформами, верхний край которых ниже нижнего края персонажа


Последний готовый проект:
флэппиберд с яйцами "Rescue Bird"(скачать с GooglePlay)
В разработке:
3-в-ряд "Корабельная команда", рогалик "Живой Мир", квест "Экипаж "Солнечной" (ждите на КРИЛ-15!)
mad_bakoДата: Вторник, 07 Апреля 2015, 06:50 | Сообщение # 5314
был не раз
Сейчас нет на сайте
Всем привет! не могу разобраться с отображением кириллицы в событий draw.
Есть шрифт font0 с диапазоном до 255. В окне с право кириллица отображается правильно.
в draw прописал
Код
draw_set_font(font1);

вот только в коде
Код
draw_text(64, 330, "Уровень турели: "+string(global.turel))
слово "уровень турели" не появляется.
Если написать на английском, то всё отображается. Подскажите что не так?
YellowAfterlifeДата: Вторник, 07 Апреля 2015, 07:46 | Сообщение # 5315
Сейчас нет на сайте
Цитата mad_bako ()
Если написать на английском, то всё отображается. Подскажите что не так?

GMS, я полагаю? Если так, то нужно в шрифт добавлять не 0-255, а отдельные диапазоны 32-127 (латиница и всякие символы) и 1040-1111 (кириллица).


mad_bakoДата: Вторник, 07 Апреля 2015, 11:07 | Сообщение # 5316
был не раз
Сейчас нет на сайте
Цитата YellowAfterlife ()
отдельные диапазоны 32-127 (латиница и всякие символы) и 1040-1111 (кириллица).

ах, вот оно что! Спасибо огромное!

Добавлено (07 апреля 2015, 11:07)
---------------------------------------------
еще вопросик.
А draw в событий mouse event работает?
Просто в событие добавил код

Код
draw_self();
draw_set_color(c_white)
draw_text(224, 320, "Уровень Бендера: "+string(global.bender))
draw_text(224, 340, "Цена обучения: "+string(bender_cena))
draw_text(224, 360, "Для обучения Бендера нажмите на его изоброжение");

но ничего не выводится
YellowAfterlifeДата: Вторник, 07 Апреля 2015, 12:37 | Сообщение # 5317
Сейчас нет на сайте
Цитата mad_bako ()
еще вопросик.
А draw в событий mouse event работает?

Функции рисования работают лишь в событии рисования, как можно заподозрить.
Если нужно отображать что-то при наведении мыши то это можно сделать так:
draw_self();
if (position_meeting(mouse_x, mouse_y, id)) { // если текущий объект находится под мышью
draw_set_color(c_white)
draw_text(224, 320, "Уровень Бендера: "+string(global.bender))
draw_text(224, 340, "Цена обучения: "+string(bender_cena))
draw_text(224, 360, "Для обучения Бендера нажмите на его изоброжение");
}




Сообщение отредактировал YellowAfterlife - Вторник, 07 Апреля 2015, 12:38
mad_bakoДата: Вторник, 07 Апреля 2015, 14:32 | Сообщение # 5318
был не раз
Сейчас нет на сайте
Цитата YellowAfterlife ()
draw_self();
if (position_meeting(mouse_x, mouse_y, id)) { // если текущий объект находится под мышью
draw_set_color(c_white)
draw_text(224, 320, "Уровень Бендера: "+string(global.bender))
draw_text(224, 340, "Цена обучения: "+string(bender_cena))
draw_text(224, 360, "Для обучения Бендера нажмите на его изоброжение");
}

Уиии! спасибо. Дурная голова никак не до тукала использовать "if"
LuxorixДата: Четверг, 09 Апреля 2015, 09:46 | Сообщение # 5319
постоянный участник
Сейчас нет на сайте
Помогайте. При создании файла .apk выдает ошибку.


Установлено уже все что только можно. Все компилирует кроме .apk
Официальный форум весь уже перелопатил.

Лог ошибки:


LUXORIX GAMES

Сообщение отредактировал Luxorix - Четверг, 09 Апреля 2015, 15:10
t111Дата: Пятница, 10 Апреля 2015, 14:31 | Сообщение # 5320
почетный гость
Сейчас нет на сайте
У меня вот такой вопрос, вот у разных людей разные разрешения экрана на компах! У меня ноут 1366х728 px . Я естественно при создании игры в GM делаю комнату как уровень именно с этим разрешением! Но вот если дать игру поиграть другу, а у него например старый комп со старым монитором с разрешением 1040х800 например, то у него будет не на весь экран. А если вдруг например у него экран больше моего, то тоже проблемка. Так вот я всегда даю поиграть тем людям, у которых монитор с моим разрешением, чтобы все четко было. Просто я до сих пор не знаю как сделать так чтобы кому игру бы не дал, не бояться что у него там уровень не на весь экран будет, или он некоторых моментов игры не увидит из-за этого. Как это делается в GM ? Научите меня)

как известно, встречают по
одежке, а провожают
uninstall'ом"

Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг