Воскресенье, 24 Ноября 2024, 09:15

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Результаты поиска
mafon2Дата: Пятница, 06 Мая 2016, 16:59 | Сообщение # 21 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Пишу алгоритм для Текучей воды.

Блок воды чекает объекты снизу, если пусто, то создает Блок воды снизу.

Блок воды чекает снизу, если занято, то чекает слева, если пусто, то создает блок воды слева.

Блок воды чекает снизу, если занято, то чекает справа, если пусто, то создает блок воды справа.

В степ поставил следующее:

Код

if (FLOW==0)
{
// Нижний чек
if (!place_meeting(x,y+16, Obj_block) || !place_meeting(x,y+16, Water_flowing))
{
instance_create(x, y+32, Water_flowing);
Water_block_count = Water_block_count + 1;
//FLOW = FLOW+1;
}
// Правый чек
else if (place_meeting(x,y+16, Obj_block) && (!place_meeting(x+16,y, Water_flowing) || !place_meeting(x+16,y, Obj_block)))
{
instance_create(x+32, y, Water_flowing);
Water_block_count = Water_block_count + 1;
//FLOW = FLOW+1;
}

// Левый чек
else if (place_meeting(x,y+16,objBlock) && (!place_meeting(x-16,y, Water_flowing) || !place_meeting(x-16,y, Obj_block)))
{
instance_create(x-32, y, Water_flowing);
Water_block_count = Water_block_count + 1;
//FLOW = FLOW+1;
}
}


------------

В общем, когда включен только нижний чеккинг, она течет вниз, но как надо растечься, то только вправо. Подозреваю, что дело в неправильно оформленном if'е или выбранном "степе". FLOW был введен, как попытка избежать перегруза, из-за которого программа виснет, создав 20 тысяч блоков, хотя видно штук 15. Да, точно, наверное, надо было в "крит". Но крит, в отличие от степа, жалуется на "инфинит луп" + вода теряет текучесть.

Бонусные очки, если подскажите, как замедлить процесс (задать скорость воды), чтобы текучесть не зависела от скорости комнаты.


Сообщение отредактировал mafon2 - Пятница, 06 Мая 2016, 18:24
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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