Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public override void Update(GameTime gameTime)
- {
- float elapsedSec = (float)gameTime.ElapsedGameTime.TotalSeconds;
- keyboard = Keyboard.GetState();
- mouse = Mouse.GetState();
- rotazione -= (float)(mouse.X - game.Window.ClientBounds.Width / 2)/4 * elapsedSec;
- beccheggio += (float)(mouse.Y - game.Window.ClientBounds.Height / 2)/4 * elapsedSec;
- // Riposiziona il mouse al centro del viewport per le successive letture.
- Mouse.SetPosition(game.Window.ClientBounds.Width / 2, game.Window.ClientBounds.Height / 2);
- // Crea una matrice di rotazione secondo i vari angoli di rotazione
- Matrix rot = Matrix.CreateFromYawPitchRoll(rotazione, beccheggio, rollio);
- // Calcola i vettori per la matrice di rotazione corrente.
- Vector3 camUp = Vector3.Transform(Vector3.UnitY, rot);
- Vector3 camLook = Vector3.Transform(Vector3.UnitZ, rot);
- Vector3 camLeft = Vector3.Cross(camUp, camLook);
- //La velocità di movimento.
- float speed = 600.0f;
- // Pulsante per uscire dal gioco.
- if (keyboard.IsKeyDown(Keys.Escape))
- game.Exit();
- //Raddoppia la velocità se premuto il tasto lo Shift sinistro.
- if (keyboard.IsKeyDown(Keys.LeftShift))
- speed *= 2.0f;
- // Controlla la pressione dei tasti A W S D per lo spostamento
- // moltiplica per elapsedSec per rendere la velocità di spostamento indipendente
- // dal framerate.
- ////////////////////////////////////////////////////////////////////////////
- if (keyboard.IsKeyDown(Keys.A))
- posizione += speed * elapsedSec * camLeft;
- if (keyboard.IsKeyDown(Keys.D))
- posizione -= speed * elapsedSec * camLeft;
- if (keyboard.IsKeyDown(Keys.W))
- posizione += speed * elapsedSec * camLook;
- if (keyboard.IsKeyDown(Keys.S))
- posizione -= speed * elapsedSec * camLook;
- ////////////////////////////////////////////////////////////////////////////
- // Crea la matrice per il punto di vista corrente
- //Si trova nel metodo Update perchè essa verrà aggiornata ad ogni fotogramma
- gioco.View = Matrix.CreateLookAt(posizione, posizione + camLook, camUp);
- base.Update(gameTime);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement