Skocz do zawartości

Wirtualne pady na ekranie


Rekomendowane odpowiedzi

Wirtualne pady na ekranie

przykład przeznaczony raczej na platformy mobilne

pad wykorzystuje multitouch, można dać tyle padów ile mamy multitouchowy telefon/tablet(np jeden do chodzenie, drugi do patrzenia)

//jezeli użyjesz tego przykładu w grze dodaj mnie do credits i poinformuj na PW, dzieki

 

pierwszy skrypt dajemy do jakiegoś obiektu który kontroluje całą grę, skrypt zwraca nam id pada

przykłady położenia:

prawy górny róg

GML
var size=display_get_gui_width()/10

x=display_get_gui_width()-size-size/5

y=size+size/5

lewy górny róg

GML
var size=display_get_gui_width()/10

x=size+size/5

y=size+size/5

prawy dolny róg

GML
var size=display_get_gui_width()/10

x=display_get_gui_width()-size-size/5

y=display_get_gui_height()-size-size/5

lewy dolny róg

GML
var size=display_get_gui_width()/10

x=size+size/5

y=display_get_gui_height()-size-size/5

oczywiście wartości x i y podstawiamy w skrypcie scrPad_create

 

GML (scrPadcreate)
/*----------------------------------------------------------------------------*/

/*--------------id_pada=scrPad_create(x na gui,y na gui, wielkość)------------*/

/*----------------------------------------------------------------------------*/

var i=instance_create(0,0,objPad)

with(i)

{

size=argument2

pad_x=argument0

pad_y=argument1

pad_odl=0

mouse_id=-1

}

return i

 

drugi skrypt dajemy do step obiektu objPad

GML (scrPadstep)
/*----------------------------------------------------------------------------*/

/*--------------------------------scrPad_step()-------------------------------*/

/*----------------------------------------------------------------------------*/

if mouse_id!=-1

{

 

if device_mouse_check_button(mouse_id,mb_any)

{

image_angle=point_direction(pad_x,pad_y,device_mouse_raw_x(mouse_id),device_mouse_raw_y(mouse_id))

pad_odl=min(size-size/3,point_distance(pad_x,pad_y,device_mouse_raw_x(mouse_id),device_mouse_raw_y(mouse_id)))

}else mouse_id=-1

}

else

{

for(var i=0;i<=5;i+=1)

{

if device_mouse_check_button_pressed(i,mb_any)

{

if point_distance(pad_x,pad_y,device_mouse_raw_x(i),device_mouse_raw_y(i))<=size

{

mouse_id=i

i=6

}

}

}

pad_odl=max(0,pad_odl*0.9)

}

 

trzeci skrypt to tylko i wyłącznie wyświetlanie, każdy może sobie zrobić inaczej.

dajemy go do draw gui w obiekcie objPad

GML (scrPaddraw)
/*----------------------------------------------------------------------------*/

/*--------------------------------scrPad_draw()-------------------------------*/

/*----------------------------------------------------------------------------*/

draw_set_color(c_black)

draw_circle(pad_x,pad_y,size,1)

draw_set_alpha(0.5)

draw_circle(pad_x+lengthdir_x(pad_odl,image_angle),pad_y+lengthdir_y(pad_odl,image_angle),size/3,0)

draw_set_alpha(1)//dałem to na wszelki wypadek</span>

 

Jak pobieramy kierunek pada?

to proste

GML
kierunek=id_pada.image_angle

id_pada pobraliśmy przy skrypcie scrPad_create

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...