Пятница, 27 Декабря 2024, 13:05

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (Game Maker)
FadeBakerДата: Среда, 11 Декабря 2013, 04:32 | Сообщение # 4661
JavaSE Game Developer
Сейчас нет на сайте
AnOmalyWolf, используй функцию move_potential_step. Название точно не помню, посмотри в справке.

Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
AnOmalyWolfДата: Среда, 11 Декабря 2013, 06:22 | Сообщение # 4662
частый гость
Сейчас нет на сайте
Fade, Ага... Нашёл. Спасибо большое. biggrin
Код
mp_potential_step(x,y,stepsize,checkall)

Добавлено (11.12.2013, 06:22)
---------------------------------------------
Ещё вот такой вопрос есть. Мне нужно, чтобы при нажатии левой кнопки мыши создавался объект obj_wall.
Но только в местах комнаты ниже чем y+500 например.
То есть, комната размерами 800X600... Если нажал вверху комнаты левую кнопку, ничего не произошло, а если внизу, то появился obj_wall. smile
Есть идеи? smile

zaicev9797Дата: Среда, 11 Декабря 2013, 06:56 | Сообщение # 4663
AbRaKaDaBrA
Сейчас нет на сайте
если у тебя к курсору прикреален какой - то объект то просто его координаты сверяй

if (obj.у > 500)
{instance_create....}

а если не прекреплен то прикрепи

я так синтаксис не помню, но думаю логику ты понял


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Среда, 11 Декабря 2013, 06:57
AnOmalyWolfДата: Среда, 11 Декабря 2013, 08:35 | Сообщение # 4664
частый гость
Сейчас нет на сайте
zaicev9797, Спасибо. Не стал прикреплять объект, нашёл другой выход. Но твоя идея подтолкнула меня на эту мысль. Спасибо. biggrin
adast12Дата: Четверг, 12 Декабря 2013, 14:36 | Сообщение # 4665
почетный гость
Сейчас нет на сайте
Как сделать так чтобы при нажатии пальцем на объект и водя пальцем по оси y объект двигался за пальцем?
hero564Дата: Пятница, 13 Декабря 2013, 18:32 | Сообщение # 4666
Made in Ukraine
Сейчас нет на сайте
adast12, не знаю как с тач падом, но на пс делал так:
в событии Mouse Left Pressed:
Код
press=true

в событии Mouse Left Released:
Код
press=false

в Step:
Код
if press=true and y<ymax and y>ymin{
      y=mouse_y
}
adast12Дата: Пятница, 13 Декабря 2013, 20:37 | Сообщение # 4667
почетный гость
Сейчас нет на сайте
Обновил game maker и вылезла эта ошибка
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Step Event0
for object o_info_menu:

DoSet :: Invalid comparison type
at gml_Object_o_info_menu_StepNormalEvent_1 (line 1) - if (lang = 1)
############################################################################################

Вот код в событии Step
if (lang = 1)
{
background_index = background0;
}


Сообщение отредактировал adast12 - Пятница, 13 Декабря 2013, 20:52
hero564Дата: Суббота, 14 Декабря 2013, 17:25 | Сообщение # 4668
Made in Ukraine
Сейчас нет на сайте
background_index - это для pop-up сообщений? Если да, то в новых версиях они не поддерживаются.
MrSlapДата: Воскресенье, 15 Декабря 2013, 00:41 | Сообщение # 4669
почетный гость
Сейчас нет на сайте
smile Здравствуйте, господа игроделы.
У меня проблема довольно нубского характера, но я никак не могу её решить, чтобы было толково:

Как адекватно выстроить анимацию и смену спрайтов в игре?

Хм... Как бы уточнить вопрос? В общем, жанр - платформерный РПГ. Нужно чтобы при любых условиях новая анимация не могла начаться, пока не закончится предыдущая. Кроме, скажем, ходьбы, и приседания. Мой перс - лучник, он натягивает тетиву некоторое время (что определяет скорость стрелы, соответственно, и силу удара, и дальность полёта), во время натяжения тетивы, объекты рук (вписал отдельными объектами, чтобы левая рука находилась за персонажем, а правая перед ним) проигрывали эту анимацию, чтобы не делал игрок, пока не отпустит кнопку мыши - для спуска тетивы. Само тело персонажа должно откликаться на команды - приседать, подпрыгивать, идти или бежать (и я имею ввиду анимации всего этого). Так же есть возможность переключать на рукопашное оружие и на магию. В рукопашном режиме интерактивные руки, следящие за мышью, отключаются, и спрайт тела меняется на спрайт с руками и мечом, у которого прописаны анимации ударов и прочего.
Так всё работает.

Суть вопроса - как сделать, чтобы любая нужная мне анимация проигрывалась от начала и до конца, не взирая на смену действий. Например я не мог переключить оружие, пока натянута тетива. Я не мог снова нанести удар, пока не закончилась анимация первого удара.

Все попытки создать более-менее оптимизированный и удобный код провалились. Расскажите, как прикрепляете анимации к игре вы.


Создаю интерактивную повесть.
GameMixДата: Воскресенье, 15 Декабря 2013, 11:54 | Сообщение # 4670
старожил
Сейчас нет на сайте
MrSlap, всё решение лежит в использовании события Animation End.
В событии создания персонажа объяви и инициализируй логическую переменную. Например:
Код
animation = false; // анимация удара не происходит

Теперь везде, где находится выполнение удара, ставь проверку:
Код
if (animation)
{
animation = false; // отключаем возможность нанесения повторного удара
и действия нанесения удара
}

И, наконец, в событии Animation End:
Код
animation = true; // анимация завершилась, разрешаем наносить очередной удар и использовать анимацию


Steel Standoff - 2D аркада.
Мои статьи
MrSlapДата: Воскресенье, 15 Декабря 2013, 12:29 | Сообщение # 4671
почетный гость
Сейчас нет на сайте
GameMix, буду пробовать. Спасибо.

Создаю интерактивную повесть.
tomkallenДата: Воскресенье, 15 Декабря 2013, 12:44 | Сообщение # 4672
частый гость
Сейчас нет на сайте
adast12, переменную объявили? If не работает с необъявленными

Код
var lang = 1;

// code here

if (lang == 1)   
{   
background_index = background0;   
}   

Добавлено (15.12.2013, 12:44)
---------------------------------------------
hero564, Нет, у него ошибка именно для цикла If без объявления (строка 1 вызвала фатал)

background_index[0..7] работать будет – это для записи и свопа фонов комнаты


Если можешь не делать игру - не делай.

Сообщение отредактировал tomkallen - Воскресенье, 15 Декабря 2013, 12:39
sayranДата: Воскресенье, 15 Декабря 2013, 20:28 | Сообщение # 4673
частый гость
Сейчас нет на сайте
Доброе время суток ! Подскажите как реализовать щит у корабля ? Есть корабль нажимаешь кнопку срабатывает щит проходит время он исчезает ?

tomkallenДата: Воскресенье, 15 Декабря 2013, 21:04 | Сообщение # 4674
частый гость
Сейчас нет на сайте
sayran, Alarm эвент и инстанс дестрой в нем?

Если можешь не делать игру - не делай.
jayreckДата: Понедельник, 16 Декабря 2013, 05:39 | Сообщение # 4675
участник
Сейчас нет на сайте
sayran,
Код


if keyboard_check_released(ord('M')) { instance_create(ship.x+20,ship.y,shield) alarm[0]=120 }

в аларме уничтожаем потом

-----------------------------------------------------------------
Замудрил такое

Код

Create:

up_button = virtual_key_add(60,200,30,36,vk_up)
down_button = virtual_key_add(60,254,30,36,vk_down)
left_button = virtual_key_add(30,230,36,30,vk_left)
right_button = virtual_key_add(84,230,36,30,vk_right)


Код
Draw:
if keyboard_check(up_button)  draw_sprite(controller,5,60,200)  else  draw_sprite(controller,1,60,200)  
if keyboard_check(down_button)   draw_sprite(controller,4,60,254)  else  draw_sprite(controller,0,60,254)  
if keyboard_check(left_button)  draw_sprite(controller,6,30,230)  else  draw_sprite(controller,2,30,230)  
if keyboard_check(right_button)  draw_sprite(controller,7,84,230)  else  draw_sprite(controller,3,84,230)  


в итоге это почему то криво работает, а именно при нажатии любой кнопки моргает только спрайт up_button, но если сделать так

Код
Draw:
if keyboard_check(vk_up)  draw_sprite(controller,5,60,200)  else  draw_sprite(controller,1,60,200)  
if keyboard_check(vk_down)   draw_sprite(controller,4,60,254)  else  draw_sprite(controller,0,60,254)  
if keyboard_check(lvk_left)  draw_sprite(controller,6,30,230)  else  draw_sprite(controller,2,30,230)  
if keyboard_check(vk_right)  draw_sprite(controller,7,84,230)  else  draw_sprite(controller,3,84,230)  


то всё работает корректно, но так мне не надо так потому что будет использоваться сенсор, а не клавиатура
З.Ы. часа 2 уже сижу и не как не пойму в чём соль, взгляните свежим взглядом

Добавлено (16.12.2013, 05:35)
---------------------------------------------
всё понял, я не совсем правильно понял значение функции virtual_key_add();

Добавлено (16.12.2013, 05:39)
---------------------------------------------
а потому надо использовать второй вариант draw и всё будет ок


g-null-dc
Ippolit - тамагоч
немного моего пиксель арта
sayranДата: Понедельник, 16 Декабря 2013, 07:12 | Сообщение # 4676
частый гость
Сейчас нет на сайте
А можно пример выложить !

tomkallenДата: Понедельник, 16 Декабря 2013, 13:38 | Сообщение # 4677
частый гость
Сейчас нет на сайте
sayran, а разве господин jayreck не выложил?

Если можешь не делать игру - не делай.
JunkerKunДата: Понедельник, 16 Декабря 2013, 16:22 | Сообщение # 4678
частый гость
Сейчас нет на сайте
Цитата sayran ()
А можно пример выложить !

http://rghost.ru/51003872

Делал еще динозавром, поэтому никаких изысков в области кода не ждать. Вообще, по моему там и нет кода никакого, там кнопки...
Собственно, Shift = щит.


Сообщение отредактировал JunkerKun - Понедельник, 16 Декабря 2013, 16:23
adast12Дата: Вторник, 17 Декабря 2013, 20:21 | Сообщение # 4679
почетный гость
Сейчас нет на сайте
Все равно все время повторяются вот объект с глобальным списком:
В create
global.objects = ds_list_create()
ds_list_add(global.objects, o_Textura4)
ds_list_add(global.objects, o_Textura5)
ds_list_add(global.objects, o_Textura6)
ds_list_add(global.objects, o_Textura7)
ds_list_add(global.objects, o_up_dnive)
ds_list_add(global.objects, o_ice_dnive)

Вот код в объектах, во всех объектах код одинаковый o_Textura4, o_Textura5, o_Textura6, o_Textura7, o_up_dnive, o_ice_dnive:
В step
if world=0
{
sprite_index=textura_cave6;
}
if sptextura = 8
{x-=globalspeed}
else
{x-=0}
if (x<400 && ready=1)
{
val = irandom(ds_list_size(global.objects))
obj = ds_list_find_value(global.objects, val)
instance_create(1192, y, obj)
ds_list_delete(global.objects, val)
ready=0
}

if (x < - 400)
{
instance_destroy();
}
URGINSANДата: Вторник, 17 Декабря 2013, 21:57 | Сообщение # 4680
почти ветеран
Сейчас нет на сайте
Ребят помогите, в общем есть переменная roty - отвечающая за поворот объекта, мне нужно чтоб при нажатии на кнопку этот объект поворачивался плавно на 45 градусов. Я когда-то давно писал такую функцию, потом ее забыл( И нужно, чтоб скорость поворота тоже можно было свою задать.

Я на драйве
Поиск:

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