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?
[U3D] - Rotazione intorno ad un obj
- 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
draw_text(100,100,"fra3point");
Progetti in corso:
Progetti in corso:
Spoiler
-
- 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
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: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)
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.
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
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
- 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
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)));
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)));
Schiva 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é?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- 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
@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!
@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!
draw_text(100,100,"fra3point");
Progetti in corso:
Progetti in corso:
Spoiler
Chi c’è in linea
Visitano il forum: Nessuno e 17 ospiti