Взаимодействие с объектом.
|
|
Cmaujluk | Дата: Воскресенье, 11 Августа 2013, 20:44 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Всем привет! Честно говоря нубский вопрос, надеюсь вы поможете. Вообщем выглядит всё так. Когда гг сталкивается с объектом этот объект добавляется в инвентарь, но когда место в инвентаре заканчивается, некий объект имеющий спрайт "Нет места" становится видимым, стоит отойти от предмета(ов) объект со спрайтом из виду исчезает. Реализовал я это дословно так - если места в инвентаре нету и дистанция до объекта меньше 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) Вроде должно получиться. Сделал отдельный объект-контроллер, всё работает без потери фпса, спасибо! 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 |
|
| |