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.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access