[U3D] - Rotazione intorno ad un obj

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
Avatar utente
fra3point
Membro attivo
Messaggi: 388
Iscritto il: 24/08/2010, 15:16
Specialità: Prog. e 3D Modelling
Località: L'Aquila
Contatta:

[U3D] - Rotazione intorno ad un obj

Messaggio da fra3point »

Posto qui anche se è una domanda che può essere rivolta anche al 2D..

Ho un oggetto fisso e voglio che la telecamera, a seconda di un valore in gradi modifichi la sua posizione. Ho fatto in modo che la camera compia un cerchio intorno all'oggetto.

[codescript=Create Event]xc=200; //centro del cerchio, coordinata x
yc=250; //centro del cerchio, coordinata y
raggio=40;
angolo=270; //l'angolo iniziale[/codescript]

[codescript=Step Event]if (keyboard_check(vk_left)) {
angolo+=0.05;
}

else if (keyboard_check(vk_right)) {
angolo-=0.05;
}

x=global.car_index.x+xc-(raggio*sin(angolo))+xc;
y=global.car_index.x-4*yc-(raggio*cos(angolo))+yc;[/codescript]


Non ho nessun problema, ma vorrei fare in modo che la camera punti sempre in direzione dell'oggetto.. Ho provato con point_direction ma qualcosa non torna.. Il movimento di rotazione è tutt'altro che giusto. Qualche idea?
draw_text(100,100,"fra3point");

Progetti in corso:
Spoiler
Tuning Paradise --> 10%

Saw: The Game --> 60%

Tropic Races --> 40%

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [U3D] - Rotazione intorno ad un obj

Messaggio da Jak »

perchè point direction non dovrebbe fungere?
Ricordati che è segnalato pure sul manuale che l'angolo di U3D sarebbe angoloGM+90
Eventualmente se vuoi avere la precisione assoluta senza farti troppi conti:

Codice: Seleziona tutto

vett_dir=CreateVector (-1, camera.x-oggetto_puntato.x, camera.y-oggetto_puntato.y, camera.z-oggetto_puntato.z);//crei un vettore che va dal punto della telecamera a quello dell'oggetto.
Poi usi CalculateVectorLongitude (VectorID) e CalculateVectorLatitude (VectorID) per scoprire i valori da dare alla telecamera ed il gioco è fatto(ovviamente libera il vettore dalla memoria quando non ti serve)
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: [U3D] - Rotazione intorno ad un obj

Messaggio da BaronVsCorsar »

scusa, ma questi calcoli:
x=global.car_index.x+xc-(raggio*sin(angolo))+xc;
y=global.car_index.x-4*yc-(raggio*cos(angolo))+yc;
cosa significano?

x ed y dovrebbe essere il punto della circonferenza, e contemporaneamente la circonferenza è centrata sia in car_index.x, sia in xc?
e perchè sommi xc due volte?
e perchè sottrai il seno alla x?
e perchè sottrai la yc moltiplicata per 4 e poi la sommi???????
e perchè alla y sommi la car_index.x????????????'
e perchè calcoli il seno/coseno di un angolo espresso in gradi sessadecimali e non in radianti?

se sei in 2d (coordinata y invertita rispetto alla matematica)
//xc e yc li ignoro, e centro la circonferenza sulla macchina
x=global.car_index.x + (raggio*sin(degtorad(angolo))) ;
y=global.car_index.y - (raggio*cos(degtorad(angolo)));

se sei in 3d la y non ha senso invertirla (le coordinate non sono riferite allo schermo)
//xc e yc li ignoro, e centro la circonferenza sulla macchina
x=global.car_index.x + (raggio*sin(degtorad(angolo))) ;
y=global.car_index.y + (raggio*cos(degtorad(angolo)));
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: [U3D] - Rotazione intorno ad un obj

Messaggio da guidox »

Usa lengthdir_x/y che fai prima. :lol:
Immagine

Immagine

Avatar utente
fra3point
Membro attivo
Messaggi: 388
Iscritto il: 24/08/2010, 15:16
Specialità: Prog. e 3D Modelling
Località: L'Aquila
Contatta:

Re: [U3D] - Rotazione intorno ad un obj

Messaggio da fra3point »

@jak: No, ho una rotazione strana con point_direction... E con i vettori non ci sono riuscito per ora.. però provo e riprovo.. Prima o poi qualcosa uscirà!

@baronvscorsar: Hai ragione, usando i radianti va perfettamente! Quei calcoli lasciali perdere erano fatti per farmi uscire qualcosa di decente. Ora il movimento di "rivoluzione" è ok! Manca solo la "rotazione"! ;) Grazie!

@Guidox: x e y le ho trovate.. Devo solo trovare la rotazione.. Grazie lo stesso!

EDIT: HO RISOLTO!

@jak: ho dovuto invertire il vettore in quanto il codice che avevi postato faceva guardare la camera verso l'esterno, non verso l'oggetto. Comunque grazie! Ora è tutto ok! :D
draw_text(100,100,"fra3point");

Progetti in corso:
Spoiler
Tuning Paradise --> 10%

Saw: The Game --> 60%

Tropic Races --> 40%

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti