ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Главная » Статьи » Game Maker » Game Maker

Игровой процесс

Игровой процесс

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

Информация об игровом процессе может быть обнаружена на следующих страницах:

Перемещение Вокруг
Пути
Планирование Движения
Проверка Столкновения
Образцы Объектов
Отключение Образцов
Синхронизация
Комнаты
Игровой Счёт
Генерация Событий
Дополнительны Переменные и Функции

 

Перемещение вокруг

 

Очевидно, важным аспектом игры является перемещение вокруг образцов объекта. Каждый образец объекта имеет две встроенных переменных x и y, которые указывают позицию этого образца. (Точнее, они указывают место, где установлена начальная позиция спрайта.) Позиция (0,0) является левым верхним углом комнаты. Вы можете изменить позицию образца объекта, изменив переменные x и y. Если Вы хотите сделать движения объекта более комбинированными, то это верный путь. Вы обычно будете помещать этот код в событие шага для объекта.

Если объект перемещается с постоянной скоростью и направлением, то есть более легчайший путь, чтобы достичь этого. Каждый образец объекта имеет горизонтальную скорость (hspeed) и вертикальную скорость (vspeed) (пикселей за шаг). Положительная горизонтальная скорость означает движение направо, а отрицательная горизонтальная скорость означает движение налево. Положительная вертикальная скорость - вниз и отрицательная вертикальная скорость - вверх. Итак, Вы должны устанавливать эти переменные только тогда (например, в событии создания), когда нужно обеспечить образцу объекта постоянное движение.

Существует другой путь для определения движения, используя направление (в градусах 0-359) и скорость (не должна быть отрицательной). Вы можете устанавливать и считывать эти переменные, чтобы определить произвольное движение. (Непосредственно это изменяет величины для hspeed и vspeed.) Также имеются: сила трения, сила тяжести и направление действия силы тяжести. Наконец, имеется функция motion_add(dir,speed), чтобы добавлять движение к текущему образцу объекта.

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

x Отражает координату образца объекта по оси X.
y Отражает координату образца объекта по оси Y.
xprevious Отражает координату образца объекта по оси X.
yprevious Отражает предыдущую координату образца объекта по оси Y.
xstart Отражает координату по оси X в текущей комнате.
ystart Отражает координату по оси Y в текущей комнате.
hspeed Отражает величину скорости перемещения образца объекта по горизонтали.
vspeed Отражает величину скорости перемещения образца объекта по вертикали.
direction Отражает текущее направление образца объекта (от 0 до 360 градусов, отсчёт ведётся против часовой стрелки, 0 - направо).
speed Отражает текущую скорость образца объекта (пикселей за шаг).
friction Отражает текущее трение образца объекта (пикселей за шаг).
gravity Отражает силу гравитации для текущего образца объекта (пикселей за шаг).
gravity_direction Отражает направление гравитации для текущего образца объекта (270 - вниз).
motion_set(dir,speed) Заставляет текущий образец объекта двигаться в направлении dir со скоростью speed.
motion_add(dir,speed) "Векторно" добавляет движение со скоростью speed и направлением dir к текущему движению образца объекта.

Доступно также много функций, которые помогут Вам в определении заданных Вами движений:

place_free(x,y) Возвращает, если с образцом объекта, помещенным в точку с координатами (x,y), не происходит столкновений с твёрдыми объектами. Обычно данная функция используется для проверки перед непосредственным перемещением образца объекта в позицию с координатами (x,y).
place_empty(x,y) Возвращает, если с образцом объекта, помещённым в точку с координатами (x,y) не происходит вообще никаких столкновений.
place_meeting(x,y,obj) Возвращает, если при помещении текущего образца объекта в точку с координатами (x,y) происходит столкновение оного с образцом объекта obj. Это также может быть идентификатор образца, специальное слово всех значений образцов любого объекта, или специальное слово других образцов.
place_snapped(hsnap,vsnap) Возвращает, если текущий образец объекта находится в ячейке сетки, расчерченной с самого начала комнаты, вертикальные линии которой проведены через vsnap пикселей, а горизонтальные через hsnap пикселей.
move_random(hsnap,vsnap) Перемещает текущий образец объекта в произвольную свободную ячейку сетки текущей комнаты.
move_snap(hsnap,vsnap) Перемещает текущий образец объекта в ближайшую ячейку сетки текущей комнаты.
move_wrap(hor,vert,margin) Заворачивает образец объекта, когда он покидает комнату перемещаясь на другую сторону. hor - указывает заворачивание по горизонтали и vert - указывает заворачивание по вертикали. margin - указывает, как значительно начальный образец должен быть за пределами комнаты, когда случается заворачивание. Итак, это - область вокруг комнаты. Вы обычно используете эту функцию в событии Outside (Внешняя сторона).
move_towards_point(x,y,sp) Заставляет текущий образец объекта двигаться по направлению к точке с координатами (x,y) со скоростью sp.
move_bounce_solid(adv) Проверяет, если adv - истина, то текущий образец объекта будет рикошетить от образцов твёрдых объектов.
move_bounce_all(adv) Проверяет, если adv - истина, то текущий образец объекта будет рикошетить от образцов всех объектов.
move_contact_solid(dir,maxdist) Заставляет образец объекта двигаться в направлении dir до тех пор, пока текущий образец объекта не столкнётся с образцом твёрдого объекта. Аргумент maxdist содержит максимальную дистанцию (в пикселях), которую следует пройти образцу объекта. То есть, если образец объекта проходит максимальную дистанцию не встречая образцов твёрдых объектов, то он всё равно остановится. Если вы хотите, чтобы образец объекта всё же двигался до столкновения, независимо от размера пройденного пути, присвойте maxdist значение -1 (для произвольного расстояния используйте отрицательные значения).
move_contact_all(dir,maxdist) То же самое, что и предыдущая функция с тем отличием, что образец объекта будет двигаться, пока не столкнётся с образцом любого объекта.
move_outside_solid(dir,maxdist) Заставляет образец объекта двигаться в указанном направлении dir до тех пор, пока текущий образец объекта соприкасается с образцом твёрдого объекта. Если при создании образца объекта "соприкосновения" не происходит, то образец остаётся на месте. Аргумент maxdist содержит расстояние (в пикселях), которое образец объекта должен пройти для произвольного расстояния используйте отрицательные значения).
move_outside_all(dir,maxdist) То же самое, что и предыдущая процедура с тем отличием, что образец объекта будет двигаться, пока происходит "соприкосновение" с образцом любого объекта.
distance_to_point(x,y) Возвращает длину дистанции от точки с координатами текущего образца объекта до точки с координатами (x,y).
distance_to_object(obj) Возвращает длину дистанции от точки с координатами текущего образца объекта до ближайшего образца объекта obj.
position_empty(x,y) Возвращает, если в точке с координатами (x,y) ничего не находится.
position_meeting(x,y,obj) Возвращает, если в точке с координатами (x,y) находится образец объекта obj. obj может быть объектом, идентификатором образца объекта или одним из ключевых слов: self, other, или all.

 

 

Пути

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

path_start(path,speed,endaction,absolute) Начинает путь для текущего образца объекта. path - имя пути, который Вы хотите запустить. speed - скорость, с которой путь должен быть сопровождён. Отрицательная скорость означает, что образец объекта перемещается в обратном порядке (задом наперёд) вдоль пути. endaction - указывает, что должно случиться, когда будет достигнуто окончание пути. Следующие значения могут быть использованы:

0 : останавливает путь
1: продолжение со стартовой позиции (если путь не закрыт, мы перескакиваем на стартовую позицию)
2: продолжение из текущей позиции
3: возобновляет путь, что изменяет признак скорости

Аргумент absolute должен быть истиной или ложью. Когда истина - используются абсолютные координаты пути. Когда ложь - путь становится относительно текущего образца объекта. Точнее, если скорость положительная, то стартовая точка пути будет установлена в текущей позиции, и путь будет следовать оттуда. Когда скорость является отрицательной, то завершающая точка пути будет установлена в текущей позиции, и путь оттуда будет следовать в обратном порядке.
path_end() Заканчивает сопровождение пути для текущего образца объекта.
path_index* Идентифицирует текущий путь, который следует за образцом объекта. Вы не можете изменять это непосредственно, но должны использовать функцию выше.
path_position Позиционирует текущий путь. 0 - начало пути. 1 - конец пути. Значение должно быть между 0 и 1.
path_positionprevious Предшествующая позиция в текущем пути. Это может использоваться, например, в событиях столкновения для установки позиции на обратный путь предшествующей позиции.
path_speed Скорость (пикселей за шаг), с которой путь должен быть сопровождён. Используйте отрицательную скорость для обратного перемещения.
path_orientation Ориентация (против часовой стрелки), в которой путь будет выполнен. 0 - нормальная ориентация пути.
path_scale Масштабирование пути. Увеличьте, чтобы сделать путь больше. 1 - значение по умолчанию.
path_endaction Действие, которое должно быть выполнено при завершении пути. Вы можете использовать вышеуказанные величины.

 

 

Планирование движения

Планирование движение поможет Вам перемещать определённые образцы объекта от одной позиции к другой, избегая столкновений с другими образцами объекта (например, стенами). Планирование Движения является трудной задачей. Невозможно даже предоставить общих функций, которые будут работать удовлетворительно во всех ситуациях. Также, обработка столкновения свободных движений является трудоёмкой операцией. Итак, будьте осторожными, применяя это. Пожалуйста, держите эти замечания в уме, когда Вы будете использовать любую из следующих функций.

Различные формы планирования движения предусмотрены в Game Maker. Самая простая форма позволяет, чтобы образец объекта отправился к конкретной целевой позиции, пытаясь по возможности перемещаться прямо. При этом беря другое направление, если первоначальный способ перемещения невозможен. Эти функции должны использоваться в событии шага образца объекта. Они должны соответствовать движениям планированных действий, которые также доступны:

mp_linear_step(x,y,stepsize,checkall) Позволяет образцу объекта перемещаться прямо к указанной позиции (x,y). Размер шага указывается stepsize. Если образец объекта уже в позиции, то он не переместится дальше. Если checkall - истина, то образец объекта остановится при контакте с образцом любого объекта. Если - ложь, то он остановиться только при контакте с твёрдыми образцами объекта. Отметьте, что эта функция не предусматривает "объездов", если образец встречает препятствие. В этом случае это просто терпит неудачу. Функция возвращает, если была достигнута целевая позиция.
mp_linear_step_object(x,y,stepsize,obj) Также как и функция выше, но на этот раз, только образцы obj считаются как препятствия. obj может быть объектом или идентификатором образца.
mp_potential_step(x,y,stepsize,checkall) Подобно предшествующей функции, но эта функция позволяет, чтобы образец объекта перемещался к конкретной позиции. Но в этом случае, он пытается избегать препятствий. Когда образец объекта должен встретить твёрдый образец объекта (или любой образец объекта, когда checkall - истина), то он изменит направление движения, пытаясь избежать столкновения с другим образцом и переместиться вокруг него. Метод не гарантируется, чтобы использовать его всё время, но в большинстве простых случаев - это эффективно переместит образец объекта к нужной цели. Функция возвращает, если была достигнута цель.
mp_potential_step_object(x,y,stepsize,obj) Также как и функция выше, но на этот раз, только образцы obj считаются как препятствия. obj может быть объектом или идентификатором образца.
mp_potential_settings(maxrot,rotstep,ahead,onspot) Предшествующая функция делает свою работу, используя множество параметров, которые могут быть изменены, используя эту функцию. Глобально, метод работает следующим образом. Сначала пытается переместить образец прямо к цели. Это предусматривается множеством шагов вперёд, которые могут быть установлены параметром ahead (3 по умолчанию). Уменьшение этого значения означает, что образец объекта запустится с изменённого направления позже. Увеличение значения, означает, что образец объекта будет запущен с изменённого направления раньше. Если проверяется столкновение, то образец "начнёт смотреть", куда ему лучше повернуть - налево или направо. Это происходит в шагах размера rotstep (10 по умолчанию). Уменьшая это значение, мы предоставляем образцу объекта больше возможностей перемещения, но это будет медленней. Параметр maxrot - немного трудней объяснить. Образец объекта имеет текущее направление maxrot (30 по умолчанию), которое указывает, сколько раз позволяется изменять своё текущее направление в шаге. Даже если бы образец мог переместиться, например, прямо в цель, то это завершилось бы только в том случае, если бы были не нарушены максимальные изменения направления. Если Вы делаете maxrot большим, то образец объекта может измениться много раз в каждом шаге. Это позволяет легче найти кратчайший путь, но путь при этом будет беспорядочным. Если Вы делаете значение меньшим, то путь будет более гладким, но образец может при этом выбрать более длинные отклонения (и иногда даже не обнаруживать цель). Когда никакой шаг не выполняется, поведение будет зависеть от значения параметра onspot. Если onspot - истина (значение по умолчанию), образец объекта возвращается в свою точку указанной суммы maxrot. Если - ложь, то образец объекта не переместится совсем. Устанавливать значение "ложь" иногда полезно, например, автомобили будут иметь быстрейший шанс обнаружения пути.

Пожалуйста, отметьте, что потенциальный метод использует только локальную информацию. Итак, образец только обнаружит путь в том случае, если эта локальная информация достаточно полная, чтобы определить правильное направление движения. Например, образец объекта не найдёт путь (выход) из лабиринта (в большинстве случаях).

Второй тип функций вычисляет длину от столкновения свободного "пробега" для образца объекта. Как только этот путь будет вычислен, Вы сможете назначить его образцу объекта, чтобы переместить его к цели. Вычисление пути занимает некоторое время, но после этого, выполнение пути будет быстрым. Конечно, это всё будет правильно, если ситуация между тем не изменится. Например, если препятствия изменяются, то Вам, возможно, понадобиться вычислить путь заново. Снова обратите внимание, что эти функции могут потерпеть неудачу. Эти функции доступны только в Pro издании Game Maker.

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

mp_linear_path(path,xg,yg,stepsize,checkall) Вычисляет прямолинейную траекторию для образца объекта из своей текущей позиции в позицию (xg,yg), используя указанный размер шага. Это использует шаги подобно функции mp_linear_step(). Указанный путь должен уже существовать, и он будет переписан новым путем. Функция возвращает, если путь был обнаружен. Функция остановит и сообщит о неудаче, если никакая прямолинейная траектория не существует между началом и целью. Если это терпит неудачу, то путь всё ещё будет создан, при запуске до той позиции, где образец объекта будет заблокирован.
mp_linear_path_object(path,xg,yg,stepsize,obj) Также как и функция выше, но на этот раз, только образцы obj считаются как препятствия. obj может быть объектом или идентификатором образца.
mp_potential_path(path,xg,yg,stepsize,factor,checkall) Вычисляет путь для образца объекта из своей текущей позиции в позицию (xg,yg), используя размер указанного шага, чтобы избегать столкновения с препятствиями. Это использует потенциальные шаги области подобно функции mp_potential_step() и также параметры, которые могут быть установлены mp_potential_settings(). Указанный путь должен уже существовать, и он будет переписан новым путем. (Смотрите последующую главу о том, как создавать и уничтожать пути.) Функция возвращает, если путь был обнаружен. Чтобы избегать функций, продолжающих непрерывную обработку, Вам нужно установить длину показателя больше чем 1. Функция остановится и сообщит о неудаче, если она не сможет найти путь короче, чем время показателя расстояния между началом и целью. Показатель 4 - нормальный и достаточно хороший, но если Вы ожидаете длинные отклонения, то Вы можете сделать его дольше. Если это терпит неудачу, то путь всё ещё будет создан при запуске до начала целевой позиции, но её образец не достигнет.
mp_potential_path_object(path,xg,yg,stepsize,factor,obj) Также как и функция выше, но на этот раз, только образцы obj считаются как препятствия. obj может быть объектом или идентификатором образца.

Другие функции используют более сложный механизм, используя базирующийся метод сетки (иногда названной A* алгоритм). Это будет более успешным действием в обнаружении путей (хотя это всё ещё может потерпеть неудачу) и найдёт пути быстрее, но для этого потребуется от Вас дополнительной работы. Основная идея выглядит следующим образом. Прежде всего, мы помещаем сетку в (важную часть) комнату. Вы можете использовать тонкую сетку (медленней) или грубую сетку. Затем, для всех важных объектов, мы определяем ячейки сетки, которые перекрывают сетку (или используя bounding box или точную проверку) и отмечаем эти ячейки как запрещённые. Такая клетка будет выделена как полностью запрещённая, даже если бы она была частично перекрыта препятствиями. Наконец, мы определяем начало и целевую позицию (которая должна быть размещена в свободных клетках), и функция вычисляет самый короткий путь (действительно близкий к самому короткому) между ними. Путь будет работать между центрами свободных клеток. Если ячейки достаточно большие, то образец объекта, установленный в своем центре, будет полностью в нём размещён, что будет иметь успех. Этот путь Вы можете теперь назначить образцу объекта.

Базирующийся метод сетки - очень мощный элемент (и используется в основном в профессиональных играх), но он требует, чтобы Вы проделывали всё это, мысля очень осторожно. Вы должны определить, какая область и размер ячейки будет соответствовать оптимальному решению для Вашей игры. Также Вы должны определить, какие объекты должны быть аннулированы и иметь точную проверку столкновений, это важное значение. Все эти параметры сильно влияют на эффективность метода.

В целом, размер ячеек важен. Помните, что ячейки должны быть достаточно велики, так что движущийся объект установленный в начале центра клетки, должен быть размещён полностью в ячейке. (Будьте осторожными с начальной позицией объекта. Также поймите, что Вы можете сдвинуть путь, если начало объекта - не в своём центре!) С другой стороны, меньшие ячейки предоставляют больше возможностей существующих путей. Если Вы делаете ячейки слишком большими, то расстояние между препятствиями может закрыться, поскольку все ячейки пересекут препятствие. Следующие фактические функции для базирующего метода сетки доступны.

Фактические функции для базирующегося метода сетки представлены следующим образом:

mp_grid_create(left,top,hcells,vcells,cellwidth,cellheight) Создаёт сетку. Это возвращает идентификатор, который должен быть использован во всех других вызовах. Вы можете создать и поддерживать многочисленные структуры сетки в том же моменте. left и top указывают позицию левого верхнего угла сетки. hcells и vcells указывают число горизонтальных и вертикальных ячеек. Наконец, cellwidth и cellheight указывают размер ячеек.
mp_grid_destroy(id) Уничтожает указанную структуру сетки и освобождает используемую память. Не забывайте использовать это, если Вам больше не нужна структура.
mp_grid_clear_all(id) Маркирует все освобождаемые ячейки сетки.
mp_grid_clear_cell(id,h,v) Очищает указанную ячейку. Ячейка 0,0 - верхняя левая ячейка.
mp_grid_clear_rectangle(id,left,top,right,bottom) Очищает все ячейки, что пересекает указанный прямоугольник (в координатах комнаты).
mp_grid_add_cell(id,h,v) Выделяет указанную ячейку как запрещённую. Ячейка 0,0 - верхняя левая ячейка.
mp_grid_add_rectangle(id,left,top,right,bottom) Выделяет все ячейки, что пересекает указанный прямоугольник как запрещённый.
mp_grid_add_instances(id,obj,prec) Выделяет все ячейки, что пересекает образец указанного объекта как запрещёный. Вы можете использовать индивидуальный образец объекта, создавая obj для идентификатора образца. Также Вы можете использовать ключевое слово all, чтобы указывать все образцы всех объектов. prec - указывает, что независимо точной проверки, столкновение должна быть осуществлено (будет работать только в том случае, если точная проверка проверена для спрайта используемого образцом объекта).
mp_grid_path(id,path,xstart,ystart,xgoal,ygoal,allowdiag) Вычисляет путь через сетку. path - должен указать существующий путь, который будет заменён путём, задаваемым компьютером. xstart и ystart - указывают начало пути, и xgoal и ygoal - цель. allowdiag - указывает, что допускаются диагональные перемещения вместо обычных горизонтальных и/или вертикальных. Функция возвращает, если путь успешно обнаружен. (Отметьте, что путь не зависит от текущего образца объекта; это путь через сетку - не путь для специфического образца объекта.)
mp_grid_draw(id) Рисует сетку с зелёными свободными ячейками и красными ячейками - запрещёнными. Эта функция очень медленная и предусмотрена только как отладочное средство.

 

 

Проверка cтолкновения

При планировании движений или проверке определённых действий, часто важно знать, имеются ли столкновения с другими объектами в определённых местах. Следующие программы могут использоваться именно для этого. Все они, в общем, имеют три аргумента: аргумент obj - может быть объектом, ключевое слово all, или идентификатор образца объекта. Аргумент prec - указывает, должна ли проверка быть точной или только базироваться на bounding box образца объекта. Точная проверка осуществляется, когда спрайт для образца объекта имеет точную проверку столкновения установленную в опциях. Аргумент notme - указывает, что вызванный образец объекта не должен проверятся. Все эти функции возвращают идентификатор одного из образцов объекта, который сталкивается, или они возвращают отрицательное значение, когда нет столкновения.

collision_point(x,y,obj,prec,notme) Проверяет, есть ли в точке (x,y) столкновение с объектами obj.
collision_rectangle(x1,y1,x2,y2,obj,prec,notme) Проверяет, есть ли столкновение между прямоугольником с указанными противоположными углами и объектами obj. Например, Вы можете использовать это для проверки свободной от препятствий области.
collision_circle(xc,yc,radius,obj,prec,notme) Проверяет, есть ли столкновение между кругом центрированным в позиции (xc,yc) с заданным радиусом и объектами obj. Например, Вы можете использовать это для проверки - имеется ли ближайший объект возле конкретной позиции.
collision_ellipse(x1,y1,x2,y2,obj,prec,notme) Проверяет, есть ли столкновение между эллипсом с указанными противоположными углами и объектами obj.
collision_line(x1,y1,x2,y2,obj,prec,notme) Проверяет, есть ли столкновение между линией сегмента из (x1,y1), в (x2,y2) и объектами obj. Это мощная функция. Вы можете использовать её для проверки - может ли образец объекта видеть другой образец объекта, заодно проверяя, пролегает ли линия сегмента между их стеной.

 

 

Образцы объектов

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

object_index* Идентификатор объекта, которому принадлежит текущий образец. Эта переменная не может быть изменена.
id* Уникальный идентификационный номер текущего образца объекта (больше 100000). При создании образцов объектов в комнатах вы можете увидеть id образца объекта, если наведёте на него курсор.)
mask_index Идентификатор спрайта, который используется в качестве маски для столкновений для текущего образца объекта. Значение -1 устанавливается в качестве маски текущего спрайта для заданного объекта.
solid Отражает, является ли текущий образец объекта твёрдым. Это может быть изменено в течение игры.
persistent Отражает, является ли текущий образец объекта постоянным, и будет ли он появляться при переходе в другую комнату. Вы часто можете захотеть выключить "постоянность" в определённых моментах. (Например, когда Вы возвращаетесь в первую комнату.)

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

instance_count* Содержит общее количество образцов в текущей комнате.
instance_id[0..n-1]* Содержит идентификатор конкретного образца объекта. Где n является номером образца.

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

{
  maxid = -1;
  maxpower = 0;
  for (i=0; i<instance_count; i+=1)
  {
    iii = instance_id[i];
    if (iii.object_index == unit)
    {
      if (iii.power > maxpower)
        {maxid = iii; maxpower = iii.power;}
    }
  }
}

После того, как цикл maxid будет содержать идентификатор устройства с самой большой мощностью. (Не уничтожайте образцы объекта в течение такого цикла, поскольку они автоматически будут удалены из массива, и в результате начнут пропускаться образцы объекта.)

instance_find(obj,n) Возвращает идентификатор образца объекта obj за номером (n+1). Если он не существует, то возвращается специальный объект noone. Отметьте, что назначение образцов к своим идентификаторам изменяется каждый шаг, так что Вы не можете использовать переменные из предшествующих шагов.
instance_exists(obj) Возвращает (истина), если образец объекта obj существует. obj может быть объектом, идентификатором образца или всеми сразу.
instance_number(obj) Возвращает количество образцов объекта obj. obj может быть объектом, идентификатором образца или всеми сразу.
instance_position(x,y,obj) Возвращает идентификатор образца объекта obj, находящегося в точке (x,y). Если в указанной точке находятся несколько образцов объекта obj, то функция возвращает идентификатор первого образца. obj может быть объектом, идентификатором образца или всеми сразу. Если он не существует, то возвращается специальный объект noone.
instance_nearest(x,y,obj) Возвращает идентификатор ближайшего к точке (x,y) образца объекта obj. obj может быть объектом, идентификатором образца или всеми сразу.
instance_furthest(x,y,obj) Возвращает идентификатор наиболее отдалённого от точки (x,y) образца объекта obj. obj может быть объектом, идентификатором образца или всеми сразу.
instance_place(x,y,obj) Возвращает идентификатор образца объекта obj, который встретится, если текущий образец поместить в точку с координатами (x,y). obj может быть объектом, идентификатором образца или всеми сразу. Если он не существует, то возвращается специальный объект noone.

Следующие функции могут быть использованы для создания и разрушения образцов объекта.

instance_create(x,y,obj) Создаёт образец объекта obj в точке, с координатами (x,y). Функция возвращает идентификатор созданного образца.
instance_copy(performevent) Создаёт копию текущего образца. performent показывает, следует ли исполнять для полученной копии событие создания. Функция возвращает идентификатор копии образца.
instance_destroy() Уничтожает текущий образец объекта.
instance_change(obj,perf) Заменяет текущий образец объекта на образец объекта obj. Переменная perf показывает, выполнять ли события уничтожения и создания.
position_destroy(x,y) Уничтожает все образцы, спрайты которых находятся в точке (x,y).
position_change(x,y,obj,perf) Заменяет все образцы (находящиеся в точке x,y) образцами объекта obj. Переменная perf показывает, выполнять ли события уничтожения и создания.

Категория: Game Maker | Добавил: Strateg (27.12.2010)
Просмотров: 4958 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 1
1 Ромар  
0
Спасибо=) вы не могли бы помоч в обьяснеии одного вопроса?
асику 634----498----27два

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Меню сайта

-=ЯП=-

Конструктор\Движки

Игроделу

Наш опрос
Сколько вы уже создали игр?
Всего ответов: 67

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

DiamonD
Бесплатный конструктор сайтов - uCoz