Пятница, 29 Марта 2024, 04:52

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Мультитач
Мультитач
RamilyanamanaДата: Воскресенье, 21 Июля 2013, 09:32 | Сообщение # 1
Биззи Джей Ужасный
Сейчас нет на сайте
Сделал сенсорное управление, но не работает мультитач. Подскажите как реализовать?


FargostДата: Воскресенье, 21 Июля 2013, 09:58 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Здесь вроде используется мультитач, посмотри пример, может разберешься...

RamilyanamanaДата: Воскресенье, 21 Июля 2013, 10:39 | Сообщение # 3
Биззи Джей Ужасный
Сейчас нет на сайте
не подскажешь как запустить его. там формат gmz, я закинул его в туториал, в программе нажимаю открыть окно с туториалами и ни фига. ни какой реакции.

Добавлено (21.07.2013, 10:39)
---------------------------------------------
Блин ни черта не понятно. Есть еще примеры?



FargostДата: Воскресенье, 21 Июля 2013, 11:14 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Ни черта не понятно? тогда мультитач пока не для тебя, так что, досвидос

SeriksonДата: Четверг, 06 Марта 2014, 00:00 | Сообщение # 5
уже был
Сейчас нет на сайте
Цитата Ramilyanamana ()
не подскажешь как запустить его. там формат gmz, я закинул его в туториал, в программе нажимаю открыть окно с туториалами и ни фига. ни какой реакции.
Добавлено (21.07.2013, 10:39)
---------------------------------------------
Блин ни черта не понятно. Есть еще примеры?


Если ещё нужно, то вот

Код

//////// Вычисления джостика ///////////

//сброс джостика
if(control_type=0){
analog_distance=0;
point_x=(analog_x+analog_width/2)+analog_distance*(cos(analog_direction*pi/180))+view_xview;
point_y=(analog_y+analog_height/2)+analog_distance*(sin(analog_direction*pi/180))+view_yview;

//проверяем удерживается ли палец на джостике
if (!device_mouse_check_button(device_used,mb_left)){
device_used=-1;
}

//уравнение для аналога
for(ddevice=0;ddevice<=4;ddevice+=1){
if (device_mouse_check_button(ddevice,mb_left) and (device_mouse_x(ddevice)>analog_x+view_xview-deadzone and device_mouse_y(ddevice)>analog_y+view_yview-deadzone and device_mouse_x(ddevice)<analog_x+analog_width+view_xview+deadzone and device_mouse_y(ddevice)<analog_y+analog_height+view_yview+deadzone) or device_used=ddevice){
device_used=ddevice;
//вычисляем растояние и направление
analog_direction = radtodeg(arctan2((device_mouse_y(ddevice)-(analog_y+view_yview+analog_height/2)),(device_mouse_x(ddevice)-(analog_x+view_xview+analog_width/2)+.000001)));
analog_direction_ship = radtodeg(arctan2(-(device_mouse_y(ddevice)-(analog_y+view_yview+analog_height/2)),(device_mouse_x(ddevice)-(analog_x+view_xview+analog_width/2)+.000001)));
analog_distance = sqrt(sqr(device_mouse_x(ddevice)-(analog_x+view_xview+analog_width/2))+sqr(device_mouse_y(ddevice)-(analog_y+view_yview+analog_height/2)));;

//мертвая зона для джостика
if(analog_distance>analog_width/2){analog_distance=analog_width/2;}
if(analog_distance<-analog_width/2){analog_distance=analog_width/2;}

//точка аналога
point_x=(analog_x+analog_width/2)+analog_distance*(cos(analog_direction*pi/180))+view_xview;
point_y=(analog_y+analog_height/2)+analog_distance*(sin(analog_direction*pi/180))+view_yview;

/// управление игроком
direction=analog_direction_ship;
speed=(analog_distance/(analog_width/2))*ship_speed;
}

if(os_type==os_win32 || os_type==os_linux || os_type==os_macosx){
if (device_mouse_check_button(ddevice,mb_left) and device_mouse_x(ddevice)>virtual_x/2 and device_mouse_y(ddevice)>virtual_y/2 and device_mouse_x(ddevice)<(virtual_x+virtual_width)*1.5 and device_mouse_y(ddevice)<(virtual_y+virtual_height)*1.5){
event_perform(ev_keyboard,vk_space);
}}

}
///////////////// завершаем действия ///////////////////////

//трение игрока
if((analog_distance/(analog_width/2))*ship_speed<1 and speed>0){speed-=ship_friction; if(speed<0){speed=0;}}   

if(x<view_xview){x+=speed;}if(x>view_xview+view_wport){x-=speed;}
if(y<view_yview){y+=speed;}if(y>view_yview+view_hport){y-=speed;}
}


Сообщение отредактировал Serikson - Четверг, 06 Марта 2014, 00:02
XDominatorДата: Четверг, 06 Марта 2014, 09:48 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Ну ты и вбросил. Из всей твоей простыни ответ находится в одной строчке:

Код

if (!device_mouse_check_button(device_used,mb_left))
{
//
}


В ГМС используется до 4 устройств. 1 тач проверяется строкой device_mouse_check_button(0,mb_left), второй (который одновременно с первым) device_mouse_check_button(1,mb_left) и так до индекса 3. Но учитывай, что большинство устройств поддерживает максимум 2 тача, так что все 4 использовать не рекомендуется. Соответственно функции возвращают true если есть тач, и false если нет. Удач!


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
Temich7799Дата: Пятница, 14 Марта 2014, 13:22 | Сообщение # 7
частый гость
Сейчас нет на сайте
Не надо .gmz в туториал кидать facepalm Его импортировать нужно:File->Import Project.И выбираешь нужный файл
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Мультитач
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг