Воскресенье, 16 Мая 2021, 15:56

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Взаимодействие с объектом.
Взаимодействие с объектом.
CmaujlukДата: Воскресенье, 11 Августа 2013, 20:44 | Сообщение # 1
участник
Сейчас нет на сайте
Всем привет! Честно говоря нубский вопрос, надеюсь вы поможете. happy
Вообщем выглядит всё так. Когда гг сталкивается с объектом этот объект добавляется в инвентарь, но когда место в инвентаре заканчивается, некий объект имеющий спрайт "Нет места" становится видимым, стоит отойти от предмета(ов) объект со спрайтом из виду исчезает. Реализовал я это дословно так - если места в инвентаре нету и дистанция до объекта меньше 15 сделать объект видимым, иначе объект не видим.
И все ничего, но, если предметов много фпс жутко проседает.
Не подскажите, возможно ли в данной ситуации заменить distance_to_object?


Не жадный на плюсы.
Наши проекты:
Clicker Mine Mania 2 - Увлекательный кликер в стиле Minecraft
Angry Bee Evolution - Эволюция с элементами кликера
Чего не хватает? - Викторина на логику"


Сообщение отредактировал Cmaujluk - Воскресенье, 11 Августа 2013, 20:46
lisiyrakДата: Воскресенье, 11 Августа 2013, 20:59 | Сообщение # 2
Hero of bacon
Сейчас нет на сайте
Во-первых, гораздо проще сделать объект-контроллер который будет сам писать "Нет места", если нет места в инвентаре.
Во-вторых, можно сделать проверку столкновения с этим предметом, а не проверять расстояние до него.

Создай объект и в событии Draw используй вот этот код:
Код

if тут ты пишешь свою проверку(полон инвентарь или нет)
{
if collision_rectangle(player.x-16,player.y-16,player.x+16,player.y+16,item,0,0)
{

draw_text(100,100,"Нет места")

}
}



Вроде должно получиться.


KEKW

Сообщение отредактировал lisiyrak - Воскресенье, 11 Августа 2013, 21:00
USeR14Дата: Воскресенье, 11 Августа 2013, 21:00 | Сообщение # 3
RUSOriginal Studio
Сейчас нет на сайте
Зачем создавать лишний объект для отображения спрайта? Рисуй надпись сверху героя:
Draw
Код
if ...
{Draw_sprite(спрайт_Нет_места, -1, Hero.x+0,Hero.y-50)}






Сообщение отредактировал USeR14 - Воскресенье, 11 Августа 2013, 21:01
CmaujlukДата: Воскресенье, 11 Августа 2013, 23:06 | Сообщение # 4
участник
Сейчас нет на сайте
Цитата (lisiyrak)
Вроде должно получиться.
Сделал отдельный объект-контроллер, всё работает без потери фпса, спасибо! smile
p.s. Опять плюсы закончились( как откроются - накидаю. Ещё раз спасибо.

Добавлено (11.08.2013, 23:06)
---------------------------------------------
Рано начал радоваться(
При столкновении с объектом имея полный инвентарь фпс так же с 60 опускается до 40-43, а так же при каждом столкновении с объектом(когда он переносится в инвентарь) на доли секунд показывается строка
Код
draw_text(100,100,"Нет места")
Нужны ещё варианты...


Не жадный на плюсы.
Наши проекты:
Clicker Mine Mania 2 - Увлекательный кликер в стиле Minecraft
Angry Bee Evolution - Эволюция с элементами кликера
Чего не хватает? - Викторина на логику"


Сообщение отредактировал Cmaujluk - Воскресенье, 11 Августа 2013, 23:07
lisiyrakДата: Понедельник, 12 Августа 2013, 08:23 | Сообщение # 5
Hero of bacon
Сейчас нет на сайте
Cmaujluk, завтра помогу.

Добавлено (12.08.2013, 08:23)
---------------------------------------------

Цитата
При столкновении с объектом имея полный инвентарь фпс так же с 60 опускается до 40-43


Это происходит, наверное, из-за слишком сложной проверки заполненности инвентаря.


KEKW
CmaujlukДата: Понедельник, 12 Августа 2013, 14:58 | Сообщение # 6
участник
Сейчас нет на сайте
Ломал голову и придумал, может кому интересно, вот.
В степе инвентаря
Код

for(i=0 i<10 i+=1)
      for(j=0 j<6 j+=1)
          if item_sprite[i,j] < 0//проверка на наличие свободных ячеек
              global.cell_full=1
          else
              global.cell_full=0//если ячеек нету то переменная = 0

В контроллере
Код

if global.cell_full=0
if collision_rectangle(obj_hero.x-16,obj_hero.y-16,obj_hero.x+32,obj_hero.y+32,obj_gived_item,0,0)   
{   
draw_text(view_xview[0]+100,view_yview[0]+100,"Нет места")   
}   

Всё отлично работает без потери фпса.


Не жадный на плюсы.
Наши проекты:
Clicker Mine Mania 2 - Увлекательный кликер в стиле Minecraft
Angry Bee Evolution - Эволюция с элементами кликера
Чего не хватает? - Викторина на логику"


Сообщение отредактировал Cmaujluk - Понедельник, 12 Августа 2013, 14:59
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Взаимодействие с объектом.
  • Страница 1 из 1
  • 1
Поиск:

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