Четверг, 21 Ноября 2024, 18:55

Приветствую Вас Гость

Меню сайта
Наш опрос
Для какой операционной системы пишите игры?
Всего ответов: 17863
Блог » 2012 » октября » 12 » Интересные функции Game Maker. Введение
Интересные функции Game Maker. Введение
16:34
Начало.
Многие разработчики неоднократно утыкались в одну простую проблему: не хватает встроенных функций! Есть куча эффектов, математических действий, которых нет в ГМ, и не предвидится, потому как они довольно-таки специализированны. Я поступаю в таких случаях достаточно просто: пишу свои. Иногда это требует кучи времени на отладку, иногда приходится искать в инете решение подобных проблем, но, как правило, в конце концов я прихожу к нужному солюшену. Сюда я буду кидать наиболее интересные и полезные функции для объектов, в том числе и ИИ для различных игровых объектов. Надеюсь, вам пригодится. Но и вы меня не забудьте поблагодарить плюсиком в репу, мне будет очень приятно=) Начнем же!
Углы и числа.
1. Angle_difference
Возвращает разницу между двумя углами(в градусах). Очень полезна в большинстве игр с видом от третьего лица/видом сверху.
Code

//argument0 - angle1 in degrees
//argument1 - angle2 in degrees

var tmp;

tmp = abs(argument0 - argument1)
if(tmp > 180){return (360 - tmp)} else {return tmp}

2. Point_rotation
Эта подпрограмма вращает заданную точку вокруг центра координат. В global.px и global.py - искомые координаты точки. Чтобы вращать точку вокруг необходимой точки, надо сначала ее координаты вычесть, а потом прибавить к уже готовой.
Code

/*  
(argument0, argument1) - (x,y)  
argument2 - angle in degrees
*/  

var sp, cp;  

sp = -sin(argument2 * pi / 180);  
cp = cos(argument2 * pi / 180);  

global.px = argument0 * cp - argument1 * sp;  
global.py = argument1 * cp + argument0 * sp;

3. Cut_value
Обрезает число в заданных пределах. Просто и полезно.
Code

// argument 0 = minimum
// argument 1 = value
// argument 2 = maximum
return(max(argument0, min(argument1, argument2)));

4. Turn_sign
Возвращает знак угла поворота между двумя любыми углами (в градусах)
Code

//argument0 - current angle in degrees
//argument1 - expected angle in degrees

if(argument1 > argument0)  
{
if(argument1 - argument0 > 180) {return -1} else {return 1}  
}
else  
{
if(argument0> argument1) {
if(argument0 - argument1 > 180) {return 1} else {return -1} }
}

5. Использование функций sin(angle) и cos(angle)
Это уже скорее общая полезная информация об этих функциях. Во-первых, никогда не надо забывать переводить градусы в радианы и наоборот, когда используете эти замечательные функции. То есть, синус и косинус работают только с радианами, и как правило, надо писать так: sin(degtorad(angle)) и cos(degtorad(angle)) соответственно. Эти функции возвращают значение синуса/косинуса данного угла, а само значение колеблется в пределах от -1 до 1 включительно. Зачем же они нужны? На самом деле, они очень полезны в самых разным местах. Я назову одно из множества практических применений синуса и косинуса: определение скорости/смещения объекта в каждом из кардинальных направлений (х,у).
То есть, зная направление движения объекта и количество пикселей, которое он должен проходить каждый шаг, мы легко можем установить его скорость и по оси Х, и по оси У. Как? Очень просто: -sin его направления движения - это смещение по оси У (главное, про минус не забываем), а cos его направления движения - по оси Х. Так что, чтобы точно по клеткам смещать объект в нужном направлении, не пользуюясь встроенными векторными функциями, можно просто написать:
Code

x+=cos(direction)
y-=sin(direction)

Напомню, все углы только в радианах, не забывайте про это. Я в первое время, к примеру, часто путался, но потом привык.
Удачных разработок!
Категория: Разработка игр | Просмотров: 3773 | Рейтинг: 5.0/2 |
Теги: опытным, функции, интересное, GML, полезное, Game Maker, программирование, эффекты, Углы и числа
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Интересные функции Game Maker. Введение», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 2
+3-
1 Eshford   (13 Октября 2012 21:58) [Материал]
EshfordСпасибо!

+1-
2 Firellon   (13 Октября 2012 22:09) [Материал]
FirellonРад, что пригодилось=) В идеале надо бы создать одну большую тему с кучей рассортированных по разделам функций, в которую все будут добавлять новые. Тогда многие найденные решения не придется искать заново happy

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Автор материала
Ник:
Firellon
Ещё:
Все его записи
Календарь заметок
«  октября 2012  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
293031
Поиск по сайту
Записи по месяцам
Друзья сайта
Игровой форум GFAQ.ru Перевод консольных игр
Все права сохранены. GcUp.ru © 2008-2024 Рейтинг