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.