Rambler's Top100
  Навигация :
  Оглавление
  Новости (Архив)
  Об этом проекте
  О программе GM
  Скачать
  Документация
  Русский Help
  Обучение
  Примеры
  Ресурсы
  Ссылки
  Прямая связь
 Русский Help 4.0 :
  Раздел 1
  Раздел 2
  Раздел 3
  Раздел 4
  Статистика :
Рейтинг@Mail.ru


Using Game Maker

Действия

Действием называется то, что непосредственно происходит в Game Maker. Действия помещаются в события. Всякий раз, когда имеется событие, выполняются указанные в нем действия. Существует большое количество разнообразных доступных действий и для тебя очень важно понимать, что именно они делают. В этой главе я опишу каждое из них.

Все действия находятся со вложенных страницах с правой стороны окна свойств объекта. Все действия распределены в шесть наборов. Для того чтобы открыть необходимый тебе набор действий, нажми на соответствующую закладку вложенной странички. Если над иконкой с тем или иным действием удержать курсор мыши, появится ее короткое описание, информирующая пользователя о его функции.

Позволь мне немного повториться: действие помещется в событие, простым перетаскиванием его со вложенных страниц из списка действий. Ты можешь изменять их порядок в списке, используя для этого опять же перетаскивание. Если во время перетаскивания нажать клавишу (Ctrl), то будет создана копия данного действия. (Ты можешь перетаскивать и копировать действия между списками в различных окнах свойств объекта). Используй правую кнопку мыши, чтобы удалить действие (или использую клавишу (Del)) и опцию копировать (copy) и вставить (paste) действие.

Когда ты опускаешь действие в список, в большинстве случаев будет всплывать окно, в котором можно установить или изменить некоторые параметры для действия. В большинстве действий очень часто присутствуют два типа параметров. В верхней части ты можешь указывать, к какому образцу применяется данное действие . Значение по умолчанию - к самому себе (Self), то есть к образцу, для которого выполняется действие. Чаще всего именно так и нужно. В cлучае же с событием столкновения, ты можешь определить, чтобы действие применялось к другому (Other) образцу, являющемуся участником в столкновении. Таким образом ты можешь, например уничтожить другой образец. И конечно-же ты можешь выбрать применение действия ко всем образцам специфического объекта (Object). Таким образом ты можешь например заменить все красные шарики на синие. Второй тип параметра - поле под названием Относительный (Relative). Включив данную опцию (галочка в поле) - значение, которые ты напечатаешь будет относительным для текущего значения. Например, таким образом ты можешь прибавлять что-то к текущему счету, что изменит текущий счет на новое значение. Другие параметры будут описаны ниже. Параметры установленные для действия ты можешь позже изменить, дважды кликнув на этом действии в списке.

Действия (Move) Перемещения

Первый набор действий состоит из имеющих отношение с движению объектов. Доступны следующие действия:

Start moving in a direction (Начать перемещение в направлении) Используй это действие, чтобы начать перемещение образца в специфическом направлении. Ты можешь указывать направление, используя клавиши со стрелками. Используй среднюю кнопку, чтобы остановить движение. Также ты должен определить скорость движения. Эта скорость указывается в пикселах за шаг. Значение по умолчанию - 8. Желательно не использовать отрицательные скорости. Ты можешь определить сразу несколько направлений. В этой ситуации будет сделан случайный выбор. Таким образом ты можешь например позволить монстру начать двигаться влево или вправо.

Set direction and speed of motion (Установить направление и скорость движения) Это - второй способ определить движение при помощи синих стрелок. Здесь ты можешь указать точное направление. Это - угол между 0 и 360 градусами. 0 -подразумевает движение направо по горизонтали. Направление расчитывается против часовой стрелки. Так например 90 указывает направление движения - четко вверх. Если ты хочешь установить произвольное направление, то можно напечатать random(360). Как ты увидишь ниже функция random, дает случайное число - меньшее чем указанное значение. Как ты можешь видеть, здесь доступен переключатель (Relative). Если ты активируешь его, новое движение будет добавлено к предыдущему. Например, если образец перемещается вверх и ты добавляетесь движение немного налево, новое движение будет, вверх-налево.

Set the horizontal speed (Установить горизонтальную скорость) Скорость образца состоит из горизонтальной части и вертикальной части. Этим действием ты можешь изменить горизонтальную скорость. Положительная горизонтальная скорость означает движение направо. Отрицательный движение налево. Вертикальная скорость останется той же самой. Использование (relative) увеличивает горизонтальную скорость (или уменьшает ее, обеспечивая отрицательный номер).

Set the vertical speed (Установить вертикальную скорость) Аналогичным образом, с этим действием ты можешь изменить скорость образца по вертикали.

Move towards a point (Двигаться к позиции) Это действие предлагает другой способ определения движения. Вы указываешь позицию и скорость - образец начинает перемещаться со указанной скоростью к выбранной позиции. (Он не будет останавливаться в данной позиции!) Например, если ты хочешь, чтобы выстрел летел к позиции космического корабля, ты можешь использовать как позиции spaceship.x, spaceship.y. (Более подробно ты узнаешь о использования переменных дальше). Если включить опцию (Relative), ты определяшь позицию относительно текущей позиции образца. (Скорость не зависит от относительного числа!)

Set the gravity (Установить гравитацию (силу тяжести)) С этим действием ты можешь создать эффект гравитации для специфического объекта. Ты определяешь направление (угол между 0 и 360 градусами) и скорость и в каждом шаге, значение скорости в данном направлении будет добавлено к текущему движению образца объека. Как правило ты нуждаешся в очень небольшом приращении скорости (типа 0.01). Естественно ты захочешь использовать убывающее направление (270 градусов). Если ты активируешь опцию (Relative), то увеличится скорость гравитации и направление. Обрати внимание, что это противоречит реальной жизни (законам физики), разве могут различные объекты иметь различные направления гравитации?!
Set the friction (Установить трение (сопротивление)) Трение замедляет образцы, во время их движения. Ты определяешь значение трения. На каждом шаге это значение вычитается из скорости, до тех пор пока скорость не снизится до 0. Как правило используется не очень большое значение (около 0.01).

Jump to a given position (Перейти к данной позиции) При использовании этого действия ты можешь поместить образец в специфическую позицию. Ты просто определяешь x- и y-координату и образец помещается с его контрольной точки на эту позицию. Если ты включишь опцию (Relative), позиция будет относительна к текущей позиции образца.

Jump to the start position (Перейте в начальную позицию) Это действие помещает образец назад - в позицию, где он был создан.

Jump to a random position (Перейти к случайной позиции) - стены обрабатываются правильно. Хотя это работает более медленно. Также ты можешь указать, рикошетить только от твердых объектов (solid object) или от всех объектов (all object). Только учти, что рекошет выполняется не полностью физически правильно, потому что это зависит от многих свойств. Но в многих ситуациях эффект достаточно правдоподобен.

Snap to grid (Фиксировать в сетке) С этим действием ты можешь очертить позицию для образца в сетке. Ты можешь указать, горизонтальное и вертикальное фиксирующую значение (то есть соразмерно ячеек сетки). Это может быть очень полезно чтобы гарантировать, что образцы остаются в сетке.

Действия (Objects) связанные с объектом

Следующий набор действий имеет дело с созданием, изменением и разрушением образцов объектов.

Create an instance of an object (Создать образец объекта) С этим действием ты можешь создавать образцы объекта. Ты определяешь объект для создания и позицию для нового образца. Если ты включишь опцию (Relative), позиция будет выбрана - относительно позиции текущего образца. Создание образцов в процессе игры чрезвычайно полезно. Космический корабль может создавать ракеты; бомба может создать взрыв и т.д. Во многих играх ты будешь иметь некоторый контроллер объектов, который время от времени создает монстров или другие объекты. Для недавно созданного образца выполняется событие создания.

Change the instance (Изменить образец) С этим действием ты можешь заменять текущий образец на другой объект. Так например, ты можешь заменить образец бомбы на взрыв. Все параметры настройки, такие как движение или значение переменных, останутся теми же самыми. Ты можешь указывать, условия выполнения события уничтожения для текущего объекта и событие создания для нового объекта.

Destroy the instance (Уничтожить образец) С этим действием ты уничтожаешь текущий образец. Для образца выполненяется событие уничтожения.

Destroy instances at a position (Уничтожить образцы в позиции) С этим действием ты уничтожаешь все образцы находящиеся ограниченом поле, данной позиции. Это например полезно, когда ты используешь взрывающуюся бомбу. Когда включена опция (Relative), принимается позиция относительно позиции текущего образца.

Change the sprite (Изменить спрайт) Используй это действие, чтобы изменить спрайт для образца. Ты указываешь новый спрайт. Также ты можешь указать масштабный коэффициент (scale factor). Коэффициент 1 означает, что спрайт не масштабируется. Масштабный коэффициент должен быть больше чем 0. Только учти, что масштабирование спрайта замедляет рисование. Изменение спрайтов - важная особенность. Например, ты часто хочешь изменить спрайт персонажа в зависимости от направления, в котором он движется. Это может быть достигнуто, созданием разных спрайтов для каждого из этих (четырех) направлений. В событии клавиатуры для курсорных клавиш ты устанавливаешь направление движения и спрайт.

Miscellaneous (Разные) действия

Здесь представлен целый набор действий, которые имеют дело со всеми типами аспектов, такими как: звук, комнаты, игровой счет и т.д.

Play a sound (Проиграть звук) С этим действием ты проигрываешь один из звуковых ресурсов, который ты добавил в свою игру. Ты можешь указать звук, который ты хочешь проиграть и должен ли он проигрываться единожды (значение по умолчанию) или непрерывно по кругу. Несколько wave звуков могут проигрываться одновременно, а midi звук в данный момент может проигрываться только один. Так, если ты запускаешь звук midi, текущий midi звук будет остановлен. Если во вложении (advanced) указано, то может быть проигран только один образец каждого звука. Так, если выбранный звук уже играет, он будет остановлен и снова запущен на выполнение.

Stop a sound (Остановить звук) Это действие останавливает указанный звук. Если проигрывается несколько образцов данного звука, будет остановлены все.

Set an alarm clock (Установить сигнальные часы) С этим действием ты можешь устанавить одни из восьми сигнальных часов для образца. Ты указываешь число шагов и сигнальные часы. После указааного числа шагов, образец примет соответствующее сигнальное событие. Ты можешь также увеличивать или уменьшать значение, включая опцию (Relative). Если ты установишь сигнальные часы в значение меньшее или равное 0, ты выключишь их, и событие не будет сгенерировано.

Display a message (Отобразить сообщение) С этим действием ты можешь отображать сообщение в диалоговом окне. Ты просто печатаешь текст сообщение. Если ты используешь символ # в тексте сообщения, он будет интерпретирован как знак новой строки. Если запускаемый текст сообщения заключен в кавычки или содержит двойном символ кавычек, он интерпретируется как выражение. Дополнительную информацию о выражениях смотри ниже. (Обрати внимание, что это действие не работает, когда твоя игра запущена в исключительном режиме).

Set the score (Установить счет) Game Maker имеет встроенный механизм счета. Счет обычно отображается в заголовке окна. Ты можешь использовать это действие, чтобы изменить счет. Ты просто указываешь новое значение для счета. Как правило бывает нужно что-то прибавить к счету. В этом случае не забывай включить опцию (Relative).

Display the highscore list (Отобразить список лучших результатов) Это действие отображает список лучших результатов. Для каждой игры существует десятка лучших результатов. Они отображаются в списке. Если текущий счет - оказывается среди десяти лучших, новый счет вставляется и игрок может его сохранить и напечатать напротив него свое имя. Существует несколько способов, которыми ты можешь изменить внешний вид списка лучших результатов. (Это действие не работает в исключительном режиме)!

Set the number of lives (Установить число жизней) Game Maker имеет также встроенную систему игровых жизней. Число жизней обычно отображается в заголовке, но ты можешь выключать эту особенность. С этим действием ты можешь изменять число оставшихся жизней. Обычно ты устанавливаешь здесь некоторое значение, например 3, - это число жизней в начале игры, и затем число жизней уменьшается или увеличивается, в зависимости от того, что происходит. Не забудь включить опцию Relative, если ты хочешь прибавлять или уменьшать число жизней. Если в текущий момент число жизней равняется 0 (или меньше чем 0) генерируется событие "no more lives".

Sleep for a while (Времеено бездействовать) С этим действием ты можешь заморозить сцену в течение некоторого времени. Это обычно используется в начале или конце уровня, или когда ты выводишь для игрока какое-то сообщение. Ты определяешь время бездействия в миллисекундах. Также ты можешь указать, должен ли экран быть повторно перерисован, чтобы отразить самую последнюю ситуацию.

Go to the previous room (Идти в предыдущую комнату) Перемещает в предыдущую комнату. Ты можешь указать тип эффекта перехода между комнатами. Эксперементируй с настройками, чтобы определиться, какой из эффектов подходит для тебя более всего. Если ты находишься в первой комнате, то произойдет ошибка.

Go to the next room (Идти в следующую комнату) Перемещает в следующую комнату. Ты можешь указать эффект перехода.

Restart the current room (Перезапустить текущую комнату) Перезапуск текущей комнаты. Ты указываешь переходный эффект.

Go to a different room (Идти в другую комнату) С этим действием можно перейти в определенную комнату. Ты указываешь комнату и эффект перехода.

Restart the game (Перезапустить игру) С этим действием ты перезапускаешь игру с самого начала.

End the game (Закончить игру) С этим действием ты заканчиваешь игру.

Save the game (Сохранить игру) С этим действием ты можешь сохранить текущее игровое состояние. Ты определяешь, имя файла для сохранения (файл создается в рабочем каталоге игры). Позже игра может быть загружена следующим действием.

Load the game (Загрузить игру) Загружает игровое состояние из файла. Ты определяешь имя файла. Проверь, что сохраненная игра именно для этой игры и создана с той же версией Game Maker. Иначе произойдет ошибка. (Чтобы быть точным, игра загружается в конце текущего шага. Так некоторые действия после этого, все еще выполняющиеся в текущей игре, не загружаются)!

Show the game information (Показать игровйю информацию) Этим действием ты отображаешь окно игровой информации.

Switch fullscreen mode (Переключить полноэкранный режим) С этим действием ты можешь изменять экранный режим из оконного на полноэкранный, и обратно. Ты можешь указать, использовать ли переключатель, оконный или полноэкранный режим. (Действие не работает в исключительном режиме).

Questions (Вопросы)

Существует множество действий, которые задают вопрос, например - является ли позиция пустой. Когда ответ - да (true), выполняется следующее действие, иначе оно пропускается. Если ты хочешь, чтобы несколько действий были выполнены или пропущены на основании результата ты можешь поместить их в блок, по краям требуемого блока. Здесь также может находится еще часть, которая выполняется, когда ответ - нет. Такой вопрос обычно выглядит следующим образом:



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

If the number of instances is a value (Если число образцов равно значению) Ты определяешь объект и число. Если текущее число образцов объекта равно числу, вопрос возвращает - истинно (true). Иначе он возвращает - ложно (false). Ты можешь также указать, должна ли быть проверка - или число образцов меньше чем указанное значение, или больше чем заданное число. Это обычно используется, чтобы проверить ушли ли все образцы определенного типа. Часто это момент, для того чтобы закончить уровень или игру.

If a dice lands on one (Если кубик упал на один) Ты определяешь число сторон кубика. Тогда, если кубик упал на один (имеется ввиду сторона), результат истинен и следующее действие выполняется. Это действие может использоваться, чтобы внести в твою игру элемент случайности. Например, в каждом шаге ты можешь генерировать с определенным шансом бомбу или изменение направления. Чем больше число сторон кристалла, тем меньше шанс. Ты можешь фактически использовать вещественные числа. Например, если ты устанавливаешь число сторон 1.5, следующее действие выполненяется с вероятностью два из трех. Использовать число меньше чем 1 не имеет смысла.

If a sound is playing (Если звук проигрывается) Результат этого вопроса истинен, если обозначенный звук проигрывается.

If the user answers yes to a question (Если пользователь отвечает да на вопрос) Ты определяешь вопрос. Отображается диалог для игрока с кнопками Да (yes) и Нет (no). Результат истинен когда игрок отвечает да. Это действие не может использоваться в исключительном режиме; тогда ответ всегда будет да.

If an expression is true (Если выражение истинно) Ты можешь ввести выражение. Если выражение оценивается как истинное (то есть число, больше или равно 0.5) следующее действие выполняется. Смотри ниже для получения дополнительной информации о выражениях.

If a mouse button is pressed (Если кнопка мыши нажата) Возвращает истину, если указанная кнопка мыши нажата. Стандартное использование в случае шага. Ты можешь проверить, нажата ли кнопка мыши и если да, например перемещает в указанную позицию (использовать переход к точке действия со значениями mouse_x и mouse_y).

If instance is aligned with grid (Если образец выровнен с сеткой) Возвращает истинно, если позиция образца находится в сетке. Вы определяешь горизонтальное и вертикальное расстояние ячеки сетки. Это бывает полезно когда некоторые действия, например создание поворота, допускается только когда образец находится на сеточной позиции.

Else (Еще) Позади этого действия следует еще часть, которая выполняется когда результат вопроса ложный.

Start of block (Начало блока) Указывает начало блока действий.

End of block (Конец блока) Указывает конец блока действий.

Repeat next action (Повторить следующее действие) Это действие используется, чтобы повторить следующее действие (или блок действий) неоднократно. Ты просто указываешь число.

Exit the current event (Выйти из текущего события) Когда это действие встречается, то не выполняется никакое дальнейшее действие в этом событии. Оно обычно используется после вопроса. Например, когда позиция свободна, ничего не должно быть сделано и мы выходим из события. В этом примере, следующие действия выполненяется только, когда имеется столкновение.

Действия (Draw) Рисования

Действия Рисования имеют смысл только в событии рисунка. В других местах они как правило игнорируются. Запомни на будущее, что рисование иных вещей, кроме спрайтов и фоновых изображений - происходит относительно медленно. Так чтоолютные или относительно текущей позиции образца.

Set the fill color (Установить заполняющий цвет) Позволяет тебе установить цвет используемый для заполнения прямоугольников и эллипсов.

Set the line color (Установить цвет линии) Позволяет тебе установить цвет, используемый для линий вокруг прямоугольника и эллипса и при рисовании линии.

Действия (Code) связанные с Кодом

В конце содержится несколько действий, которые прежде всего работают с кодом.

Execute a script (Выполнить сценарий) С этим действием ты можешь выполнить сценарий, который ты добавляешь в игру. Ты определяешь сценарий и 3 доступных параметра для сценария.

Set the value of a variable (Установить значение переменной) Имеются большое количество встроенных переменных (variable) в игре. С этим действием ты можешь изменять их. Также ты можешь создавать свои собственные переменные и указывать значения для них. Ты определяешь название переменной и нового значения. Когда ты включаешь опцию (Relative), значение добавляется к текущему значению переменной. Обрати особое внимание, что это может быть сделано только, если значение переменной уже определено. Смотри ниже для получения дополнительной информации о переменных.

Execute a piece of code (Выполнить часть кода) Когда ты добавляешь это действие, откроется окно, в котором ты можешь напечатать часть кода. Оно работает точно также как при определении сценариев. Единственная разница в том, что ты можешь указывать, для каких образцов эта часть кода должна быть выполнена. Используй действие кода для небольших частей кода. Для более длинных частей настоятельно советую использовать сценарии.

Call the inherited event (Вызов события наследствания) Это действие полезно только, когда данный объект имеет материнский объект. Оно вызывает соответствующее событие в материнском объекте.

Comment (Комментарий) Используй это действие, чтобы добавить строку комментария в список действий. Строка отображается курсивным шрифтом. Действие ничего не делает при выполнении события. Добавлени комментария помогают тебе напомнить о том, что делают данные события.

Using expressions and variables (Использование выражений и переменных)

В большом числе действий ты должен обеспечить значения для параметров. Достаточно просто напечатать число, ты можешь также напечатать формулу, например 32*12. Но в действительности ты можешь напечатать намного более сложные выражения. Например, если ты хочешь удвоить горизонтальную скорость, ты можешь установить ее как 2*hspeed. hspeed - переменная, указывающая текущую горизонтальную скорость образца. Имеется большое количество других переменных, которые ты можешь использовать. Некоторые из наиболее важных:

X x-координата образца
Y y-координата образца
hspeed горизонтальная скорость (в пикселах на шаг)
vspeed вертикальная скорость (в пикселах на шаг)
direction текущее направление движения в градусах (0-360)
speed текущая скорость в этом направлении
visible является ли объект видимым (1) или невидимым (0)
image_scale количество масштабируемых изображений (1 = not scaled)
image_single эта переменная указывают, какую часть изображения в текущем спрайте, нужно показать; если ты устанавливаешь -1 (значение по умолчанию) ты циклически выводишь все изображения, иначе постоянно отображается только указанная часть изображения (начинается с номера 0)
score текущее значение счета
lives текущее число жизней
mouse_x x-позиция мыши
mouse_y y-позиция мыши

Ты можешь изменять большинство этих переменных, используя действие (set variable). Ты можешь также определять свои собственные переменные, определив для них значения. (Не используй относительные числа (relative), потому что они не существуют). Тогда ты можешь использовать эти переменные в выражениях. Переменные, которые ты создаешь, локальные для текущего образца. То есть каждый объект имеет свою собственную их копию. Чтобы создать глобальную переменную, помести слово global и точку перед ним. Ты можешь также обратиться к значениям переменных для других объектов, поместив название объекта и точку перед ними. Так например, если ты хочешь, чтобы шарик двигался в точку, где находится монета - ты, может установить позицию в (coin.x , coin.y). В случае события столкновения ты можешь обратиться к x-координате другого объекта как other.x. В условных выражениях ты можешь использовать сравнение подобно < (smaller than), >, и т.д. В твоих выражениях ты можешь также использовать функции. Например, функция random(10) дает случайное вещественное число ниже 10. Так ты можешь устанавливать например скорость или направление движения к случайному значению. Существует очень большое количество функций.

    Предыдущая страница     В начало     Следующая страница

© 2001 Simple Life & World