Постепенное увеличение объекта
|
|
Грозный | Дата: Воскресенье, 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 типа А в 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)
|
|
| |