Понедельник, 12 Апреля 2021, 02:07

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Бэкграунд перекрывает логотип?
Бэкграунд перекрывает логотип?
useruserДата: Среда, 06 Сентября 2017, 13:44 | Сообщение # 1
был не раз
Сейчас нет на сайте
Я хочу загрузить бэкграунд комнате authorization_room. И сверху бэкграунда вывести логотип.
Код ниже.
Но я вижу только бэкграунд без логотипа.
И если закоментировать код бэкграунда - увидим логотип. Возможно, бэкграунд перекрывает логотип.
Как это исправить?

Код

//Скрипт загрузки основных картинок
//Загрузка изображений из секции Included Files (хранятся в папке datafiles)

var
image_sprite; //Общая переменная спрайта

//Логотип (объект logo_object помещён в комнату)
image_sprite = sprite_add("resources/images/common_images/logo.png", 1, 0, 0, 0, 0);
logo_object.sprite_index=image_sprite;

//Бэкграунд
image_sprite = sprite_add("resources/images/common_images/background_01.png", 1, 0, 0, 0, 0);
//Назначение бэкграундов комнатам
authorization_room.sprite_index=image_sprite;
vampir0305Дата: Среда, 06 Сентября 2017, 13:55 | Сообщение # 2
Unity C# Programmer
Сейчас нет на сайте
Код
logo_object.depth = -5


Красочная сюжетно-ориентированная игра-головоломка
useruserДата: Среда, 06 Сентября 2017, 14:07 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата vampir0305 ()
logo_object.depth = -5

Не помогает.

И когда я меняю местами код - "//Логотип //Бэкграунд" выводится то, что идет последним.
Идет в конце код бэкграунда (как сейчас) - увидим бэкграунд.
А поменяем местами, чтобы сначала был код бэкграунда, а в конце был код логотипа и увидим только логотип.
bodya_WMДата: Среда, 06 Сентября 2017, 14:20 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
useruser, это так и должно быть.
Первым идет то что ты последним нарисовал.
Если фон рисуется Game Maker'ом то он всегда рисуется до остальных объектов.
GM должен уметь сортировать спрайты по глубине, поэтому поставь глубину логотипу например 2
Код

logo_object.depth = 2;


Разработчик игрового движка WaveGameEnvironment2D

Сообщение отредактировал bodya_WM - Среда, 06 Сентября 2017, 14:20
useruserДата: Среда, 06 Сентября 2017, 14:25 | Сообщение # 5
был не раз
Сейчас нет на сайте
Цитата bodya_WM ()
глубину логотипу например 2

И так тоже ничего не меняется.
bodya_WMДата: Среда, 06 Сентября 2017, 14:33 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
useruser, какая глубина фона?
Если рисуешь сам энтити, рисуй сначала фон затем лого.
В Draw:
Код

DrawSprite(bg, 0, 0, 0);
DrawSprite(logo, 0, 0, 0, 0);

Давно GM не трогал, поэтому это примерный код.


Разработчик игрового движка WaveGameEnvironment2D
useruserДата: Среда, 06 Сентября 2017, 14:49 | Сообщение # 7
был не раз
Сейчас нет на сайте
Цитата bodya_WM ()
useruser, какая глубина фона?

Я не знаю. Весь код выше.
Я пробовал делать по разному, вот так например
Код


//Скрипт загрузки основных картинок
//Загрузка изображений из секции Included Files (хранятся в папке datafiles)

var
image_sprite; //Общая переменная спрайта

//Логотип (объект logo_object помещён в комнату)
image_sprite = sprite_add("resources/images/common_images/logo.png", 1, 0, 0, 0, 0);
logo_object.sprite_index=image_sprite;

//Бэкграунд
image_sprite = sprite_add("resources/images/common_images/background_01.png", 1, 0, 0, 0, 0);
//Назначение бэкграундов комнатам
authorization_room.sprite_index=image_sprite;

//УСТАНАВЛИВАЕМ ГЛУБИНУ
authorization_room.depth=0; //ниже фон
logo_object.depth = -5; //выше лого

но так тоже видно только фон.

Цитата bodya_WM ()
DrawSprite(bg, 0, 0, 0);
DrawSprite(logo, 0, 0, 0, 0);

не ясно - что рисовать?
Код

draw_sprite(image_sprite, 0, 0, 0);

У меня 2 объекта - комната (если это объект) и логотип.
bodya_WMДата: Среда, 06 Сентября 2017, 14:54 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
useruser, ты устанавливаешь глубину лого ниже чем фона.
Код
var
image_sprite; //Общая переменная спрайта

//Логотип (объект logo_object помещён в комнату)
image_sprite = sprite_add("resources/images/common_images/logo.png", 1, 0, 0, 0, 0);
logo_object.sprite_index=image_sprite;

//Бэкграунд
image_sprite = sprite_add("resources/images/common_images/background_01.png", 1, 0, 0, 0, 0);
//Назначение бэкграундов комнатам
authorization_room.sprite_index=image_sprite;

//УСТАНАВЛИВАЕМ ГЛУБИНУ
authorization_room.depth=0; //ниже фон
logo_object.depth = 5; //выше лого


Разработчик игрового движка WaveGameEnvironment2D
USeR14Дата: Среда, 06 Сентября 2017, 15:06 | Сообщение # 9
RUSOriginal Studio
Сейчас нет на сайте

У меня код работает правильно. Без Draw.


Не правильно. Глубина измеряется от нуля: с минусом - выше, с плюсом - ниже. Т.е. уменьшение и увеличение глубины.




bodya_WMДата: Среда, 06 Сентября 2017, 15:22 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
USeR14, значит в GM сортировка через жопу работает.

Разработчик игрового движка WaveGameEnvironment2D

Сообщение отредактировал bodya_WM - Среда, 06 Сентября 2017, 15:22
USeR14Дата: Среда, 06 Сентября 2017, 16:24 | Сообщение # 11
RUSOriginal Studio
Сейчас нет на сайте
useruser, даже не знаю, в чем причина. Где-то в проекте явно другой косяк.



useruserДата: Четверг, 07 Сентября 2017, 07:12 | Сообщение # 12
был не раз
Сейчас нет на сайте
Цитата USeR14 ()
useruser, даже не знаю, в чем причина. Где-то в проекте явно другой косяк.

В проекте ничего другого нет.

И вот этот код
Код

image_sprite = sprite_add("resources/images/common_images/background_01.png", 1, 0, 0, 400, 400);

сдвигает рисунок на 400 пикселей влево и вверх. То есть, если мне надо сдвинуть рисунок на 400 пикселей вправо, относительно нулевых координат комнаты, то мне надо писать -400.
Но в любом языке программирования, в любой IDE, фотошопе...где угодно координаты будут положительные.
А тут наоборот?

PS
Я сдвинул рисунок (фон-бэкграунд), а под ним ничего нет....


Сообщение отредактировал useruser - Четверг, 07 Сентября 2017, 07:12
bodya_WMДата: Четверг, 07 Сентября 2017, 08:41 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
useruser, это нормально. Ты же сдвигаешь в отрицательный вектор.
Но если это атлас, то атласы в отрицательном векторе сдвигать нельзя, тебе нужно указывать вектор смещения + вектор размера.
Цитата
Но в любом языке программирования

ЯП к играм отношения не имеют, если это не специализированные для них ЯП(типа Blitz Basic)
Цитата
в любой IDE

Почитай что такое IDE.

Как я уже сказал если глубины не осилил, используй контроллер рисования лого и фона.
В Draw:
Код

DrawSprite(bg, 0, 0, 0);
DrawSprite(logo, 0, 0, 0, 0);


Разработчик игрового движка WaveGameEnvironment2D

Сообщение отредактировал bodya_WM - Четверг, 07 Сентября 2017, 08:42
useruserДата: Четверг, 07 Сентября 2017, 09:09 | Сообщение # 14
был не раз
Сейчас нет на сайте
Цитата bodya_WM ()
Как я уже сказал если глубины не осилил

Как их "осилить"? Пишу код - ничего не изменяется.

Код

//УСТАНАВЛИВАЕМ ГЛУБИНУ
authorization_room.depth=0; //ниже фон
logo_object.depth = -5; //выше лого


Цитата bodya_WM ()
DrawSprite(bg, 0, 0, 0);
DrawSprite(logo, 0, 0, 0, 0);

Функции DrawSprite нет.
И даже так
Код

draw_sprite(image_sprite, 0, 0, 0);

Ничего не изменяется.
VuvkДата: Четверг, 07 Сентября 2017, 09:20 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
Картинка со справки GM о глубине и очередности отрисовки


help

Но есть подозрение, что ошибка не здесь.


Мой блог
Мой канал на Youtube
Lokemundux Desco Domus Shaantitus. Caecux Vorox Acerbus-shatruex! Crudux Cruo!
bodya_WMДата: Четверг, 07 Сентября 2017, 09:26 | Сообщение # 16
постоянный участник
Сейчас нет на сайте
useruser, в событии Draw? Vuvk, если спрайт не рисуется даже при ручной сортировке - значит что то не так.

Разработчик игрового движка WaveGameEnvironment2D
useruserДата: Четверг, 07 Сентября 2017, 09:43 | Сообщение # 17
был не раз
Сейчас нет на сайте
Цитата bodya_WM ()
useruser, в событии Draw?

Нет. Я не смог найти подходящий объект с таким событием.
bodya_WMДата: Четверг, 07 Сентября 2017, 10:06 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
useruser, создаешь новый объект, в событии Draw пишешь
Код

Draw_Sprite(bg, 0, 0, 0);
Draw_Sprite(logo, 0, 0, 0);


Разработчик игрового движка WaveGameEnvironment2D
useruserДата: Четверг, 07 Сентября 2017, 10:18 | Сообщение # 19
был не раз
Сейчас нет на сайте
Цитата bodya_WM ()
создаешь новый объект, в событии Draw пишешь

Зачем? И какое отношение событие Draw для данного объекта будет иметь к спрайтам других объектов?
Более того, встает вопрос области видимости переменных.
Да и как и на каком этапе отрисовывать спрайты, когда у меня используется одна (общая) переменная под спрайт.
А я хотел весь этот код поместить в отдельный скрипт...

Пардон, но что-то тут не так. Такие финты ушами ради тривиальной задачи загрузки 2х картинок.
VuvkДата: Четверг, 07 Сентября 2017, 10:35 | Сообщение # 20
заслуженный участник
Сейчас нет на сайте
Цитата useruser ()
у меня используется одна (общая) переменная под спрайт

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


Мой блог
Мой канал на Youtube
Lokemundux Desco Domus Shaantitus. Caecux Vorox Acerbus-shatruex! Crudux Cruo!


Сообщение отредактировал Vuvk - Четверг, 07 Сентября 2017, 10:36
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Бэкграунд перекрывает логотип?
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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