La rotazione è solitamente ottenuta applicando una matrice di trasformazione. X, Y, e Z sono "input" nella matrice, e il risultato della "uscita" è una tradotti coordinate. C'è un sacco di materiale su Google se si cerca, ma io sto solo andando a concentrarmi a girare solo attorno all'asse Y (per rotare a destra o a sinistra):
Creiamo una funzione 'rotateXZ':
| rotateXZ(vectorX, vectorZ, angolo)
| nuovoX = vectorX[]cos(angolo) - vectorZ[]sin(angolo)
| nuovoZ = vectorX[]sin(angolo) + vectorZ[]cos(angolo)
Supponendo che l'angolo di 0 sta guardando dritto avanti, cerchiamo di rotare l'oggetto cerchio a sinistra di 45 ° (se a destra, sarebbe -45):
| rotateXZ(-100, 200, 45) = -212.132, 70.711 (x,z)
Così, dopo aver girato di 45 ° a sinistra, nuova posizione dell'oggetto è ora (-212,71).
Ehi, che non era poi così male! :) Se siete abbastanza esperti per rotare XYZ, essere cauti di problemi di blocco del giunto cardanico (vedi Wikipedia), o leggere su della rotazione Quaternion. Per semplicità, per la semplice camminare a terra, basta usare angoli di Eulero (il metodo che ho appena spiegato).
Non vedo l'ora di vedere alcune persone cercano di tradurre questo in un gioco! ;) Io vado a fare un esempio screencast di questo, e di fornire un progetto di origine, quindi rimanete sintonizzati! (c'è una casella di controllo a sinistra per seguire me)
Aggiornamento: Ho un gioco esempio adesso! 8) Trova qui:
http://www.scirra.com/arcade/example/4788/pseudo-3d-game-test