Могут ли объекты быть связаны в Gamemaker? - PullRequest
0 голосов
/ 08 марта 2019

В игре, которую я сейчас создаю, есть интерактивный элемент, который должен работать одинаково при взаимодействии с различными элементами.Чтобы упростить многократное копирование, я продублировал объекты, содержащие этот код, и изменил переменную global.variable, которая должна определять каждую отдельную «группу» (два объекта составляют сам элемент), чтобы они работали отдельно - однако, когда я взаимодействуюс одной группой в игре она по-прежнему вызывает одновременную реакцию другой.

Могут ли объекты быть связаны в GameMaker?И если да, то как мне отсоединить эти объекты, чтобы они работали отдельно?

Вот код для обоих на тот случай, если в коде больше проблем с тем, что я пропустил.В основном, как работает группа, так это то, что когда игрок взаимодействует с объектом, объект меняет свой экземпляр, а новый объект приобретает функциональность старого.Первые три изображения в каждой группе относятся к первому объекту, последние три относятся ко второму.

Объект 1 группы 1;

Создание события

global.ssscollission = 0;

Нажатие клавиши E

if (global.ssscollission = 0)
{
global.ssscollission = 1;
}

else
{
global.ssscollission = 0;
}

instance_change(obj_snakeplush,false)

Графический интерфейс рисования

Если здесь есть функции Столкновение, Остановить движение, Текст шрифта и Значение рисования

.

Группа 1 Объект 2;

Графический интерфейс рисования

Если здесь присутствуют функции Столкновение, Остановить движение, Текст шрифта и Значение рисования, а также;

if (global.ssscollission)
{
draw_set_color(c_black);
draw_set_alpha(0.75);
draw_rectangle(0,0,room_width,room_height,0);
draw_set_alpha(1);
draw_set_color(c_white);
draw_set_halign(fa_center);
draw_sprite_ext(spr_sss,0,920,50,0.65,0.65,0,c_white,1);
draw_set_font(fnt_credit);
draw_text(1275,1400,"Press the [E] button to return.")

}

Нажатие клавиши E

if (global.ssscollission = 0)
{
global.ssscollission = 1;
}

else
{
global.ssscollission = 0;
}

Конец анимации

image_index = image_number - 1;
image_speed = 0;

global.danielfound = global.danielfound + 1

.

Группа 2 Объект 1;

Создать событие

global.danieltree = 0;

Нажать клавишу E

if (global.danieltree = 0)
{
global.danieltree = 1;
}

else
{
global.danieltree = 0;
}

instance_change(obj_danieltree,false)

Рисовать GUI

Если здесь есть Столкновение, Остановить движение, Шрифт и Значение шрифта DnD *

.

Объект 2 группы 2;

Графический интерфейс рисования

Если здесь также присутствуют функции Столкновение, Остановить движение, Шрифт и Значение шрифта DnDas;

if (global.danieltree)
{
draw_set_color(c_black);
draw_set_alpha(0.75);
draw_rectangle(0,0,room_width,room_height,0);
draw_set_alpha(1);
draw_set_color(c_white);
draw_set_halign(fa_center);
draw_sprite_ext(spr_sss,0,920,50,0.65,0.65,0,c_white,1);
draw_set_font(fnt_credit);
draw_text(1275,1400,"Press the [E] button to return.")

}

Нажатие клавиши E

if (global.danieltree= 0)
{
global.danieltree= 1;
}

else
{
global.danieltree= 0;
}

АнимКонец действия

image_index = image_number - 1;
image_speed = 0;

global.danielfound = global.danielfound + 1

Приветствия

...