O'Reilly logo

Learning XNA 4.0 by Aaron Reed

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required