Difference between revisions of "Game Programming Class3"
(→in class) |
(→in class) |
||
Line 46: | Line 46: | ||
Extract sprite from pacman class and build new project | Extract sprite from pacman class and build new project | ||
+ | |||
+ | ===Sprite class=== | ||
+ | |||
+ | IntroPacManComponent.zip | ||
+ | |||
+ | Project that refactors the pacman class into two classes | ||
+ | |||
+ | Sprite.cs | ||
+ | DrawableSprite.cs | ||
+ | |||
+ | Then the pacman class can inherit from one of these two classes. | ||
+ | |||
+ | PacMan.cs | ||
+ | |||
+ | Due to the desire to limit the number of spritebatches, I've created two classes. The sprite class cannot draw itself without being associated with and external spritebatch. | ||
+ | The DrawableSprite has it's own spritebatch which makes it easier to use but less efficient. | ||
==Homework== | ==Homework== |
Revision as of 04:47, 9 February 2009
Contents
Class 3 Input Handling
Input
input from Game Controller and Keyboard
XNA has built in support for up to 4 game controllers. The default controller is a x-box controller. X-Box Controller The Controller is accessed through the GamePad Object and the GamePadState Structure reference types <csharp>
//Get and instance of the gamePadState Structure GamePadState gamePad1State = GamePad.GetState(PlayerIndex.One);
/*Since the Keyboard structure is Windows only we need to use some preprocessor directives to only compile the KeyBoard state code if the target is not XBOX360 (I should also add zune if this is one of our build targets)
- /
#if !XBOX360 #region KeyBoard KeyboardState keyboardState = Keyboard.GetState(); #endif
</csharp>
Angle Measured in Radians
using atan2 to get the angle from the direction vector
Vibration
<csharp>
GamePad.SetVibration(PlayerIndex.One, 1.0f, 1.0f); //left low freq motor right high freq motor
</csharp>
Classes and Generics
Shooting with pacman
List<Type> Safer than Arraylist and easier to manage than Array
in class
Extract sprite from pacman class and build new project
Sprite class
IntroPacManComponent.zip
Project that refactors the pacman class into two classes
Sprite.cs DrawableSprite.cs
Then the pacman class can inherit from one of these two classes.
PacMan.cs
Due to the desire to limit the number of spritebatches, I've created two classes. The sprite class cannot draw itself without being associated with and external spritebatch. The DrawableSprite has it's own spritebatch which makes it easier to use but less efficient.
Homework
- Create an XNA project that uses the Keyboard for input.
- Read Chapter 3 in XNA 3.0