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