Функции Drag&Drop кнопок и GML кода в GM (Часть1 - Вкладка Move)
Многие новички в GM первым делом начинают обучение с специальных кнопочек, перетаскивая которые мы составляем логические цепочки и устанавливаем поведения объектам. Эта большая статья расскажет вам, как использовать кнопки и как их записывать в коде. Итак начнём...
Блок 1 - Движение (move)
Move Fixed - Движение объекта (8 направлений) Эта кнопка позволяет задать направление и скорость движения объекта. Чаще всего используется в событии Create, так как именно при создании объекта нам иногда будет необходимо его заставить двигаться (или остановиться).
Move Free - Движение объекта (свободное направление) Эта кнопка позволяет задать любое направление и скорость движения объекта. Как и Move Fixed чаще всего используется в событии Create.
Код
motion_set(направление,скорость )\\ наверняка вы заметили, что код такой же, как и у Move Fixed и неудивительно, ведь чтобы точнее указать направление нам нужно будет поставить точное значение, например: 67° (без знака °).
Move Towards - Движение к точке Эта кнопка поможет нам переместить объект к определённой точке на уровне (комнате). нам необходимо будет указать позицию по X, позицию по Y и скорость. Как только мы зададим необходимые параметры и запустим игру мы заметим, что объект начинает движение из своей стартовой позиции к той, что мы указали в кнопке с определённой скоростью.
Код
move_toward_point(x,y,скорость) \\ x,y - позиция в комнате (можно закрепить за объектом, например: ob_player.x, ob_player.y); скорость: любое положительное число.
Speed Horizontal - Движение по горизонтали (влево, вправо) Порой нам нужно сделать так, чтобы объект изменил скорость по горизонтали. Для таких случаев и используем Speed Horizontal и устанавливаем собственную скорость. Можно использовать например в событии столкновения. Герой сталкивается с обезьянкой и она убегает вправо/влево. Движение обезьянки как раз можно сделать с помощью Speed Horizontal.
Set Gravity - Установка гравитации О, великая гравитация. В некоторых играх она присутствует, например платформеры (Sonic, Mario). Для того, чтобы установить гравитацию нам нужно указать её направление и скорость. Чаще всего, нам потребуется направление гравитации вниз, т.е. значение = 270, а скорость любое число (если число отрицательное, то гравитация будет работать наоборот, то есть противоположно нашему значению, следовательно если мы установили значение 270, то гравитация будет работать в направлении 90).
Код
gravity_direction=направление; gravity=скорость.
Reverse Horizontal - Реверс по горизонтали Реверс - это смена направления движения обратного данному. То есть если наш объект двигался вправо, то когда произойдёт событие Reverse Horizontal, то объект начнёт двигаться влево.
Код
hspeed=-hspeed.
Reverse Vertical - Реверс по вертикали По аналогии с Reverse Horizontal эта кнопка поможет нам развернуть объект, но уже по вертикали.
Код
vspeed=-vspeed.
Set Friction - Установка трения Все мы слышали от учителей по физике о трении. Трение в GM позволяет постепенно замедлять объект, а потом и полностью остановить его. Это легче понять, если представить, что автомобиль едет по асфальту быстро, а по грязи всё медленнее, медленнее пока полностью не остановится. Чтобы установить трение, нам необходимо указать величину. Чаще всего мы будем использовать небольшие числа например: 0,1; 0.01; 0.05
Код
friction=величина \\ величина: любое число (если число отрицательное, то будет что-то похожее не на трение, а на гравитацию т.е. скорость будет постепенно увеличиваться)
Блок 2 - Перемещение (jump)
Jump to Position - Переместится (прыгнуть) в определённую позицию Иногда нам нужно будет, чтобы объект мгновенно переместился в другую точку экрана. Это можно осуществить с помощью этой кнопки. Для этого указываем положение X и положение Y на экране, и объект переместится в заданную точку.
Код
x=x; y=y.
Jump to Start - Переместится (прыгнуть) в начальную позицию Эта кнопка заставляет объект переместится в ту позицию, в которой он был создан.
Код
x=xstart y=ystart.
Jump to Random - Переместится (прыгнуть) в случайную позицию C помощью этой кнопки мы сможем случайно переместить наш объект. Например если мы выберем значения 640 и 480, то объект переместится случайно по всей комнате (если она у нас размером 640х480 пикселей)
Код
move_random(шир,выс).
Align to Grid - Выровнять объект по сетке Если мы хотим выровнять наш объект по сетке, то придётся использовать эту кнопку. Мы указываем ширину и длину ячейки и наш объект автоматически выравнивается по сетке.
Код
move_snap(шир,выс).
Wrap Sreen - Обогнуть экран Вспомните игру Pac-Man. Помните как герой уходил за пределы экрана и появлялся в противоположной позиции? Эта кнопка как раз для такого действия. Вы указываете направление на выбор: По горизонтали, По вертикали, В обоих направлениях и наслаждаетесь эффектом.
Код
move_wrap(1,0,объект) \\ по горизонтали; move_wrap(0,1,объект) \\ по вертикали; move_wrap(1,1,объект) \\ в обоих направлениях.
Move to Contact - Движение до столкновения Эта кнопка позволит нашему объекту двигаться до тех пор, пока он не столкнётся с другим, чаще всего твёрдым, объектом, после чего объект остановится. Это действие обычно используют в событии столкновения (Collision).
Bounce - Рикошет Да да да. Эта кнопка заставляет объект "отрикошетить" от другого объекта прямо как в футболе. Нам нужно лишь выбрать будет ли столкновение точным/не точным и с какими объектами будет сталкиваться наш объект (твёрдыми/со всеми). Чаще всего этот код вставляют в событие столкновения (Collision).
Код
move_bounce_all(true)
Ну а пока что всё. Потренируйтесь с полученными знаниями, попробуйте сделать пример на каждую из кнопок и вы быстро научитесь программировать на Game Maker`е. Спасибо и до новых встреч, ваш Naruto-63.
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Функции Drag&Drop кнопок и GML кода в GM (Часть1 - Вкладка Move)», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Не хочу показаться неблагодарным (спс за тутор) всезнающим занудой (я только сегодня начал изучать GM), но открыв либу в Library Maker я заметил, что этим действиям назначены другие функции:
Move Fixed - action_move Move Free - action_set_motion и т.д. все с префиксом action.
В вике я этих функций не нашел, хотя GM показывает их как встроенные – может их можно использовать только для кнопок?
P.S. Работу Bounce (если нельзя использовать action_bounce) полностью опишет такой код:
[code] if(B_solid) // B_solid переменная определяет сталкиваться со всеми или только с твердыми { move_bounce_solid(B_precise); // B_precise - точность } else { move_bounce_all(B_precise); } [code]
Статья хорошая, но все-таки мелкие детали упускать не нужно. В событии Move Fixed скорость может быть и отрицательной. Но при этом движение будет в противоположном направлении. Это тоже важно.
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]