Game Maker - создание игр | HellRoom Games
Июль 12, 2025, 12:17:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Движущийся задний фон слоями.  (Прочитано 9316 раз)
0 Пользователей и 1 Гость смотрят эту тему.
GooDlike
Пользователь
***

Репутация: 0
Offline Offline

Пол: Мужской
API: GameMaker Studio Standard
Сообщений: 79



« Ответ #15 : Декабрь 08, 2016, 19:07:52 »

Ну, раз у вас самостоятельно не получается сложить А и Б, то вот решение. Вбиваем в поиск «параллакс» и находим формулу в этой или одной из множества подобных тем:
Код:
background_x[0] = view_xview[0] * 0.75;
background_y[0] = view_yview[0] * 0.75;
background_x[1] = view_xview[0] * 0.50;
background_y[1] = view_yview[0] * 0.50;
background_x[2] = view_xview[0] * 0.25;
background_y[2] = view_yview[0] * 0.25;
Здесь можно увидеть, как делается сам параллакс. Эта же формула есть в FAQ II.2.2.

Далее, то же самое делается при помощи draw_background:
Код:
draw_background(bg_back1, view_xview[0] * 0.75, view_yview[0] * 0.75);
draw_background(bg_back2, view_xview[0] * 0.50, view_yview[0] * 0.50);
draw_background(bg_back3, view_xview[0] * 0.25, view_yview[0] * 0.25);
Неужели это так трудно?


А, разве первый столбец
background_x[0]
background[y][0]
Не ограничивается 8 слоями или он безграничен? Я думал, что это тоже, что и в редакторе комнат, только кодингом, поэтому и не придал этому значения, в очередной раз благодарю Вас за помощь.
Записан

Генерал песчаных карьеров...
Dmi7ry
Гл. Администратор
*

Репутация: 1379
Offline Offline

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+1000 репутации]За помощь в развитии форума!Знаток Game Maker!За помощь новичкам!
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626



WWW
« Ответ #16 : Декабрь 08, 2016, 19:14:28 »

background_x[0]
background[y][0]
Не ограничивается 8 слоями или он безграничен? Я думал, что это тоже, что и в редакторе комнат, только кодингом
Именно. Это смена координат фонов, заданных в комнате, которых может быть максимум восемь штук. Но отсюда вам нужна была только формула (view_xview[0] * 0.75 и т.д).
А функциями draw_background можно рисовать вообще любые фоны.
Записан

- А какой, собственно, командой процессора колобок ест черта?
- Командой EAT...
Справка и FAQ в правом верхнем углу...
GooDlike
Пользователь
***

Репутация: 0
Offline Offline

Пол: Мужской
API: GameMaker Studio Standard
Сообщений: 79



« Ответ #17 : Декабрь 08, 2016, 20:07:26 »

background_x[0]
background[y][0]
Не ограничивается 8 слоями или он безграничен? Я думал, что это тоже, что и в редакторе комнат, только кодингом
Именно. Это смена координат фонов, заданных в комнате, которых может быть максимум восемь штук. Но отсюда вам нужна была только формула (view_xview[0] * 0.75 и т.д).
А функциями draw_background можно рисовать вообще любые фоны.
А, как дублировать на всю комнату по х координате этот фон?
Записан

Генерал песчаных карьеров...
Goo
ну типа
GM Pro user
*

Репутация: 163
Offline Offline

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345



« Ответ #18 : Декабрь 08, 2016, 20:14:14 »

справка, вроде функция draw_background_scratch, просто почитай в справке, там есть

Добавлено: Декабрь 08, 2016, 20:22:43
если не найдешь, то можно через background_htiled
« Последнее редактирование: Декабрь 08, 2016, 20:22:43 от Goo » Записан

GooDlike
Пользователь
***

Репутация: 0
Offline Offline

Пол: Мужской
API: GameMaker Studio Standard
Сообщений: 79



« Ответ #19 : Декабрь 08, 2016, 20:31:52 »

справка, вроде функция draw_background_scratch, просто почитай в справке, там есть

Добавлено: Декабрь 08, 2016, 20:22:43
если не найдешь, то можно через background_htiled

draw_background_stretched? Нет, он растягивает, а нужно дублирование. background_htiled по всей комнате дублирует по х и у.
Записан

Генерал песчаных карьеров...
Goo
ну типа
GM Pro user
*

Репутация: 163
Offline Offline

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345



« Ответ #20 : Декабрь 08, 2016, 20:35:08 »

Цитировать
по всей комнате
А ты не этого хотел??? По моему все логично.

Тогда поясни, что в твоем понятии "Дублирует"...

Добавлено: Декабрь 08, 2016, 20:35:55
Цитировать
и у
нет, по y-ку background_vtiled

Добавлено: Декабрь 08, 2016, 20:43:25
ну или рисуй вручную массивом

Код:

var i, b=val;

for (i=0;i<n;++i)
{      draw_back(x+(back_width+b)*i,y,......);
        draw_back....
...
}

« Последнее редактирование: Декабрь 08, 2016, 20:43:25 от Goo » Записан

Dmi7ry
Гл. Администратор
*

Репутация: 1379
Offline Offline

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+1000 репутации]За помощь в развитии форума!Знаток Game Maker!За помощь новичкам!
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626



WWW
« Ответ #21 : Декабрь 08, 2016, 20:57:57 »

А, как дублировать на всю комнату по х координате этот фон?
С помощью draw_background_tiled фон будет рисоваться с заливкой всего пространства. Возможно, что для того, чтобы избежать дублирования по вертикали, придётся увеличить размеры фонов, добавив пустое пространство сверху/снизу. Но это не лучшее решение, так как значительно увеличится размер текстур (возможно, что обрежется студией, тогда вообще никаких проблем, но это нужно проверять). Наиболее оптимально будет рисовать несколько фонов, попадающих в область экрана, самостоятельно.
Например, что-то типа
Код:
var left = view_xview[0];
var right = view_yview[0]+view_wview[0];
for (var i=0; i<room_width; i+=ширина_фона)
{
    if (фон попадает в координаты экрана)
        draw_background(....);
}
Записан

- А какой, собственно, командой процессора колобок ест черта?
- Командой EAT...
Справка и FAQ в правом верхнем углу...
GooDlike
Пользователь
***

Репутация: 0
Offline Offline

Пол: Мужской
API: GameMaker Studio Standard
Сообщений: 79



« Ответ #22 : Декабрь 08, 2016, 21:21:56 »

А, как дублировать на всю комнату по х координате этот фон?
С помощью draw_background_tiled фон будет рисоваться с заливкой всего пространства. Возможно, что для того, чтобы избежать дублирования по вертикали, придётся увеличить размеры фонов, добавив пустое пространство сверху/снизу. Но это не лучшее решение, так как значительно увеличится размер текстур (возможно, что обрежется студией, тогда вообще никаких проблем, но это нужно проверять). Наиболее оптимально будет рисовать несколько фонов, попадающих в область экрана, самостоятельно.
Например, что-то типа
Код:
var left = view_xview[0];
var right = view_yview[0]+view_wview[0];
for (var i=0; i<room_width; i+=ширина_фона)
{
    if (фон попадает в координаты экрана)
        draw_background(....);
}

Печально, а нет функции, вроде встроенной в редактор комнат Tile Hor. и Tile Vert. ?
Записан

Генерал песчаных карьеров...
Goo
ну типа
GM Pro user
*

Репутация: 163
Offline Offline

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345



« Ответ #23 : Декабрь 08, 2016, 21:29:39 »

Ты вообще читаешь, то что тебе пишут?
А справку смотришь?

Цитировать
Печально, а нет функции, вроде встроенной в редактор комнат Tile Hor. и Tile Vert. ?
Код:

background_htiled   // hor
background_vtiled   // ver

а позицию фона можешь менять с помощью функций которые описаны в соответствующем разделе справки.
Либо в ручную, циклом.
Записан

GooDlike
Пользователь
***

Репутация: 0
Offline Offline

Пол: Мужской
API: GameMaker Studio Standard
Сообщений: 79



« Ответ #24 : Декабрь 08, 2016, 21:35:39 »

Ты вообще читаешь, то что тебе пишут?
А справку смотришь?

Цитировать
Печально, а нет функции, вроде встроенной в редактор комнат Tile Hor. и Tile Vert. ?
Код:

background_htiled   // hor
background_vtiled   // ver

а позицию фона можешь менять с помощью функций которые описаны в соответствующем разделе справки.
Либо в ручную, циклом.
Может сам почитаешь справку? background_htiled   работает только на 8 встроенных слоях... он не распространяется на draw_background.
Записан

Генерал песчаных карьеров...
Goo
ну типа
GM Pro user
*

Репутация: 163
Offline Offline

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345



« Ответ #25 : Декабрь 08, 2016, 21:38:14 »

Цитировать
он не распространяется на draw_background.
тебе уже писали, в таком случае, только вручную ( что уже подразумевает отсутствие аналогов tile vwr и прочих)
Записан

GooDlike
Пользователь
***

Репутация: 0
Offline Offline

Пол: Мужской
API: GameMaker Studio Standard
Сообщений: 79



« Ответ #26 : Декабрь 08, 2016, 23:35:30 »

Цитировать
он не распространяется на draw_background.
тебе уже писали, в таком случае, только вручную ( что уже подразумевает отсутствие аналогов tile vwr и прочих)
Вот и я сетую на печаль такого исхода... тоже читай, что пишут... спасибо за помощь.
Записан

Генерал песчаных карьеров...
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.15 секунд. Запросов: 29.