Movement and Rotation
In this section, we'll look at how to move and rotate objects in 3D. In your
project, you have a cool triangle. If you want to move this object to the left a
little bit, you can do so via the Matrix.CreateTranslation
method.
A translation moves an object or a point in a direction
specified by a vector. Thus, the CreateTranslation
method takes a Vector3
as a parameter. It also has an override that accepts float
values for X, Y, and Z.
Now, if you want to actually move your object and/or rotate it continuously rather
than just have it change positions and sit still, you'll need a variable to
represent your object's world. Create a Matrix
variable at the class level in your Game1
class
and initialize it to Matrix.Identity
:
Matrix world = Matrix.Identity;
Then, modify the line of code in your Draw
method where you set the BasicEffect.World
property to use this new variable:
effect.World = world;
Next, add the following code to your Update
method, just above the call to base.Update
:
// Translation KeyboardState keyboardState = Keyboard.GetState( ); if (keyboardState.IsKeyDown(Keys.Left)) world *= Matrix.CreateTranslation(−.01f, 0, 0); if (keyboardState.IsKeyDown(Keys.Right)) world *= Matrix.CreateTranslation(.01f, 0, 0);
Compile and run the game now, and you'll notice that when you press the left and right arrow keys, the object moves accordingly.
Get Learning XNA 3.0 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.