Суббота, 16 Ноября 2024, 07:47

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Постепенное увеличение объекта
ГрозныйДата: Воскресенье, 17 Мая 2015, 18:52 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет! Подскажите, как в Game Maker сделать постепенное увеличение объекта? Допустим движется линия, и с каждым пройденным пикселем она должна становиться длиннее.
ЛеонидДата: Воскресенье, 17 Мая 2015, 19:15 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Я не очень понял про линию. Можешь иначе объяснить?
Со спрайтом нужно через какой-то промежуток времени увеличивать переменны image_xscale и image_yscale на одну величину, лучше всего через alarm сделать.
ГрозныйДата: Воскресенье, 17 Мая 2015, 19:34 | Сообщение # 3
был не раз
Сейчас нет на сайте
Леонид,
Линия та, что идет по стене. Я пытаюсь сделать так, что бы она равномерно увеличивалась, и заполняла по длине все пространство. пытаюсь добиться такого же эффекта, как на нижней линии. Вот только нижняя линяя сделана так, что ее края, выходящие за границу, скрываются под стенами. А с вертикальной так не получается сделать.


Сообщение отредактировал Грозный - Пятница, 22 Мая 2015, 14:23
MrSlapДата: Воскресенье, 17 Мая 2015, 20:28 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Грозный, почему не получится? А увеличивать Y линии, в зависимости от её X?

Создаю интерактивную повесть.
ГрозныйДата: Воскресенье, 17 Мая 2015, 20:57 | Сообщение # 5
был не раз
Сейчас нет на сайте
MrSlap,
Код

if (x != xprevious)
{
a = 0
b = a+1
image_yscale = b
}

В подобном ключе? Этот код записан в объекте, в событие Create. Но он почему-то не работает
MrSlapДата: Воскресенье, 17 Мая 2015, 21:28 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Грозный, потому что события в create выполняются единожды при создании объекта... Вот он в первом шаге проверил... и всё.
А у тебя стены картинками сделаны?
Я бы предложил попробовать draw_line

что-то вроде:
Create
Код
vx=view_xview[0]//сокращаем длину писанины
vy=view_yview[0]
vw=view_wview[0]
vh=view_hview[0]

hor_x=0 //горизонтальное расширение линии
hor_y=0 //горизонтальный спуск линии
ver_x=0 //вертикальный спуск
ver_y=0 //ширина вертикали


Step
Код
if keyboard_check(vk_up)
    {
    hor_x+=4//скорость увеличения перспективы
    hor_y+=4//ощущение увеличения скорости движения (как то так)
    if hor_x>vw*0.5 {hor_x=0; hor_y=0} //если уходит за пределы экрана
     
    ver_x+=4 //приближение стены
    ver_y+=4 //высота стены при приближении
    if ver_x>vw*0.5 {ver_x=0; ver_y=0} //если уходит за пределы экрана
    }


Draw
Код
draw_line(vw*0.5+hor_x,vh*0.5+hor_y,vw*0.5-hor_x,vh*0.5+hor_y)//пол
draw_line(vw*0.5-ver_x,vh*0.5-ver_y,vw*0.5-ver_x,vh*0.5+ver_y)//левая стена
draw_line(vw*0.5+ver_x,vh*0.5-ver_y,vw*0.5+ver_x,vh*0.5+ver_y)//правая стена


Там только + и - у отрисовки линий подогнать под размеры твоей перспективы, в общем, поэкспериментируй, может получишь желаемое )

Добавлено (17 мая 2015, 21:28)
---------------------------------------------
Грозный, и ещё он у тебя не будет работать потому, что if (x != xprevious) выполняет проверку положения координаты х относительно предыдущего шага. А в предыдущем шаге координата объекта не двигается.


Создаю интерактивную повесть.
ГрозныйДата: Воскресенье, 17 Мая 2015, 23:01 | Сообщение # 7
был не раз
Сейчас нет на сайте
MrSlap, Стены сделаны объектами. А как указать место, в котором должны появляются эти линии? А то они у меня появляются за комнатой
MrSlapДата: Понедельник, 18 Мая 2015, 00:20 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Грозный, если объектами, то назначаешь переменны в Create типа
Код
xx=0   
ys=1

А в draw пишешь что-то вроде
Код
draw_sprite_stretched(sprite,subimg,x,y,w,h)

Где sprite - это спрайт отрезка стены, который должен двигаться, subimg -1 (кадр спрайта - не двигается), вместо x пиши координату расположения по икс+xx(положение спрайта - твой дальний край, где рисуется стена), y - соответственно высота, w = 1, спрайт по x всегда остаётся тонким. Вместо h пишешь ys (y_scale - то есть масштаб по вертикали).
Потом, если надо двигать, например назначаешь в step кнопку - if keyboard_check(vk_up) - например, в зависимости от того, как он должен двигаться. И в этом if пишешь:
Код
{
xx-=1;
ys+=0.1; //надо подгонять по масштабам твоей комнаты - спрайт будет расширяться быстро, уменьшай значение. Можно и формулу вывести, в зависимости от угла наклона стены (перспективы), но мне ленно.
}

Примерно так это работает. Если надо чтобы оно двигалось перманентно, то делаешь в if вместо клавиши, ограничение, которое сбрасывает x и h до базовых значений.


Создаю интерактивную повесть.

Сообщение отредактировал MrSlap - Понедельник, 18 Мая 2015, 00:37
XDominatorДата: Понедельник, 18 Мая 2015, 08:32 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Проблема в том что у него линия широкая и имеет срезы на концах. Срез нужно сделать в качестве отдельного спрайта и зеркалить его на концы, а вот сердцевину рисовать через draw_line, прикрепляя срезы к концам. Как то так, наверное)

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
MrSlapДата: Понедельник, 18 Мая 2015, 13:15 | Сообщение # 10
почетный гость
Сейчас нет на сайте
XDominator, я потому и предлагал парню просто перейти на линии в 1 пиксель ) там не надо скосы добавлять - но эмуляция движения по туннелю создаётся с тем же успехом.

Создаю интерактивную повесть.
ГрозныйДата: Понедельник, 18 Мая 2015, 15:36 | Сообщение # 11
был не раз
Сейчас нет на сайте
MrSlap, Спасибо за помощь. Все получается, кроме самого места появления этих линий. Как мне указать координаты их появления?
MrSlapДата: Понедельник, 18 Мая 2015, 23:01 | Сообщение # 12
почетный гость
Сейчас нет на сайте
Грозный, непосредственно цифрами. например:

Код
draw_line(vw*0.5-ver_x-50,vh*0.5-ver_y,vw*0.5-ver_x-50,vh*0.5+ver_y)/

-50 это отступ влево от центра экрана, не считая отступа переменной ver_x. Для правой линии, соответственно нужно +50 (или то число пикселей, откуда у тебя должно начинаться движение линий).


Создаю интерактивную повесть.
XDominatorДата: Вторник, 19 Мая 2015, 08:15 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
создавай относительно origin point самого объекта, по которому идет линия, в чем проблема? Только смещение нужно подогнать и все.

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
  • Страница 1 из 1
  • 1
Поиск:

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