Trigonometria con lengthdir

Non è così complicata come sembra!

 

Trigonometria: solo il termine è spaventoso!

Non avendola mai studiata alle scuole superiori ammetto che all’inizio spaventava anche me! 🙂

Tuttavia potete stare tranquilli: GameMaker ci aiuta come sempre con la sua semplicità! 😉

In questo tutorial vi spiegherò quando si ha la necessità di applicare funzioni trigonometriche.

Verranno trattati anche alcuni concetti riguardanti la goniometriaTeoria della misurazione degli angoli. (che è parte della trigonometria).

 

Definizione di Trigonometria

 

La trigonometria (dal greco trígonon, cioè triangolo), è la parte della matematica che studia i triangoli.

Così come rivela l’etimologia del nome, consiste nel calcolare le misure che caratterizzano gli elementi di un triangolo (lati, angoli, mediane, ecc.).

 

Trigonometria nei Videogames

 

La trigonometria potrebbe essere applicata per creare movimenti circolari, effetti ondulati, in un videogame 3D potrebbe essere applicata per consentire alla telecamera di ruotare intorno ad un targetObiettivo, bersaglio..., oppure potrebbe essere utile per stabilire l’esatta posizione di creazione di un proiettile in corrispondenza della pistola e della direzione del giocatore: immaginate uno sparatutto 2D con vista dall’alto in stile Grand Theft Auto 1:

gta1

 

Trigonometria in GameMaker

 

Una volta stabilita la lunghezza del raggio di una circonferenza, e la misura in gradi di un angolo, possiamo disegnare a video un triangolo.

Create un nuovo Object chiamato Trigonometria e nel Create Event scrivete:

raggio = 100;//raggio della circonferenza
angolo = 30;//misura dell’angolo
x = room_width/2;//posiziona l’oggetto orizzontalmente al centro della room
y = room_height/2;//posiziona l’oggetto verticalmente al centro della room

 

Ora create un Draw Event e cominciate a disegnare uno sfondo, un cerchio e due assi come riferimento:

//DISEGNA LO SFONDO

draw_set_color(make_color_rgb(34,34,34));//imposta il colore di sfondo

draw_rectangle(0,0,room_width,room_height,0);//disegna lo sfondo

//DISEGNA UN CERCHIO E DUE ASSI

draw_set_color(make_color_rgb(255,128,128));//imposta il colore del cerchio e degli assi

draw_circle(x,y,raggio,true);//disegna il cerchio

draw_line(0,room_height/2,room_width,room_height/2);//disegna l’asse orizzontale

draw_line(room_width/2,0,room_width/2,room_height);//disegna l’asse verticale

 

draw_circle(x,y,raggio,true);//UTILIZZA LA VARIABILE RAGGIO CHE ABBIAMO DICHIARATO NEL CREATE EVENT!

Sempre nel Draw Event, disegnate un triangolo utilizzando le variabili che abbiamo dichiarato nel Create Event:

//DISEGNA UN TRIANGOLO

draw_set_color(make_color_rgb(255,184,113));//imposta il colore del triangolo

draw_line(x,y,x+lengthdir_x(raggio,angolo),y+lengthdir_y(raggio,angolo));//disegna l’ipotenusa

draw_line(x,y,x+lengthdir_x(raggio,angolo),y);//disegna il cateto orizzontale

draw_line(x+lengthdir_x(raggio,angolo),y,x+lengthdir_x(raggio,angolo),y+lengthdir_y(raggio,angolo));//disegna il cateto verticale

 

La funzione lengthdir_x(len,dir) viene utilizzata per ottenere il componente x di una posizione len pixels dal punto di partenza e in direzione dir.

Immaginate un cerchio intorno alla vostra istanza, poi immaginate un punto qualsiasi su quel cerchio.

Per muovere l’istanza verso quel punto abbiamo bisogno di spostare l’Object di molti pixels in quella direzione, quindi questa funzione (quando usata in combinazione con lengthdir_y(len,dir)) ottiene la posizione di quel punto sul cerchio:

lengthdir_example

 

Ora create una RoomUna stanza, un livello., ed inserite l’Object Trigonometria al suo interno.

Infine compilate l’eseguibile cliccando sul pulsante Run the game.

Se tutto è andato a buon fine questo è il risultato che avete ottenuto:

trigonometria

 

Spero che questo tutorial vi sia stato utile…

Alla prossima! 🙂

 


 

Scaricate la Demo!

 

Nella mia demo ho aggiunto anche la possibilità di modificare in run-timeOperazioni effettuate mentre l'applicazione è avviata... i valori delle variabili raggio ed angolo tramite controlli da tastiera.

DOWNLOAD SU MEDIAFIRE!

 


 

Sono Luigi Piscopo, anche conosciuto come DJ GiDeejay / Producer / Remixer nel mondo della musica o MastergidanIl mio nickname deriva dall'unione di due parole: Master (Maestro) e Gidan (Il nome del protagonista di uno dei miei videogame preferiti: Final Fantasy IX) dagli appassionati di GameMakerCopyright © YoYo Games Ltd.. Utilizzo GameMakerCopyright © YoYo Games Ltd. sin dalla versione 5. Sono un Produttore con molta esperienza in photo editing, video editing, audio editing, grafica pubblicitaria, web design, programmazione e promozione.

Leave a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*