Download presentation
Presentation is loading. Please wait.
Published byMalcolm Whitehead Modified over 9 years ago
1
Sprites, User Input, and Collision COSC 315 Fall 2014 Bridget M. Blodgett
2
Basic XNA Game Open XNA and make a new project – You can leave the default name Open and examine program.cs and Game1.cs (or YourGamesName.cs) – What does it look like each of these methods does? What are GraphicsDeviceManager and SpriteBatch and why are they important?
3
Game Loops The logic of programming a game relies upon a game loop – This loop usually consists of a couple of methods that actually control that play of the game The key methods are Update() and Draw() – From the names what do you think goes in these two methods?
4
Registering vs Polling Most programs wait for user input to perform any actions – They can be said to register user changes and respond Games often have to keep running regardless of whether the user is interacting – This is called polling the input devices for changes – It is one reason that most games use a game loop to run
5
Game State The game state is the log of what is currently happening in the game Games usually have several basic states that correspond to the major play phases – There can be minor states that address play related states as well The game state is tracked and changed in Update() – The impacts and visible outcome are then shown using Draw()
6
Initialize()LoadContent() Update() Draw() UnloadContent()
7
Game Time Draw() accepts one parameter: gameTime – gameTime keeps track of how long has passed since the game was started – This is important because the only other method of timing is based upon the processor speed Try changing the background color to something other than blue
8
Adding Sprites XNA will allow you to use several graphics formats for images in your game – You load them into the content pipeline which then converts them to a format that is usable by the program Looking at the solution explorer you should be able to add the existing images from the source code to your project In Game1.cs write Texture2D texture; –texture = Content.Load (@”Images/logo”);
9
Drawing the Sprite The texture has been loaded into the program To draw it on the screen type: spriteBatch.Begin(); spriteBatch.Draw(texture,Vector2.Zero, Color.White); spriteBatch.End(); If you wanted to center the image you can use: –spriteBatch.Draw(texture, new Vector2(Window.ClientBounds.Width/2) – (texture.Width/2), (Window.ClientBounds.Height/2) – (texture.Height/2)), Color.White);
10
Additional Options When drawing more than one sprite it is optimal to draw as many as possible within one spriteBatch call – To make the background transparent you can turn it pure magenta (auto transparent in XNA) or use a format like PNG that handles transparency You can also flip and scale the sprites, set their order or rotate them around an axis point
11
Layer Depth Typically the sprites will layer on top of one another in the order that they are drawn on the screen Setting the layer depth property to 0 will put them on top and 1 will put them behind Changing this requires a change to spriteBatch.Begin(SpriteSortMode.FrontToBa ck, BlendState.AlphaBlend);
12
Moving Sprites Make two Vector2 variables named pos1 and pos2 and set both to Vector2.Zero ; Make two float variables named speed1 and speed2 and set them to 2f and 3f respectively. To make the movement happen you need to change the values of pos 1 and 2 in Update(). pos1.X += speed1; if(pos1.X > Window.ClientBounds.Width – texture.Width || pos1.X < 0) speed1 *= -1; pos2.Y += speed2; if(pos2.Y > Window.ClientBounds.Height – texture.Height || pos2.Y < 0) speed2 *= -1;
13
Sprite Sheets Load in the animated sprites three rings sheet like we did with the XNA logos To move between the different sprites to show motion you need to set up some basic information at the class level Point frameSize = new Point(75,75); Point currentFrame = new Point(0,0); Point sheetSize = new Point(6,8); In Draw add: spriteBatch.Draw(texture,Vector2.Zero, new Rectangle(currentFrame.X*frameSize.X, currentFrame.Y * frameSize.Y, frameSize.X, frameSize.Y), Color.White, 0, Vector2.Zero, 1, SpriteEffects.None, 0);
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.