XNA L06–Input, Audio and Video Playback

Preview:

Citation preview

Mohammad Shakermohammadshaker.com

@ZGTRShaker2011, 2012, 2013, 2014

XNA Game DevelopmentL06 – Input, Audio and Video Playback

Input Keyboard, Mouse, Touch, Joystick, Sensors, etc.

Keyboard Input

Keyboard Input

• Why static?

KeyboardState state = Keyboard.GetState();

Keyboard Input

• Using Keyboard states

KeyboardState state = Keyboard.GetState();

if(state.IsKeyDown(Keys.Left))

{

// do something here

}

Keyboard Input

• Using Keyboard states

bool leftArrowKeyDown = state.IsKeyDown(Keys.Left);

if(state.IsKeyDown(Keys.Left))

{

// do something here

}

Keyboard Input

• Using Keyboard states

KeyboardState state = Keyboard.GetState();

if(state.IsKeyDown(Keys.Left))

{

// do something here

}

Keyboard Input

• Using Keyboard states

KeyboardState state = Keyboard.GetState();

if(state.IsKeyDown(Keys.Left))

{

// do something here

}

Keyboard Input - Checking for Key Presses

if(state.IsKeyDown(Keys.Left))

{

// do something here

}

Keyboard Input - Checking for Key Presses

if(state.IsKeyDown(Keys.Left))

{

// do something here

}

Keyboard Input - Checking for Key Presses

Keys[] pressedKeys = state.GetPressedKeys();

Keyboard Input - Key Modifiers

if(

(

state.IsKeyDown(Keys.LeftControl)|| state.IsKeyDown(Keys.RightControl)

)

&& state.IsKeyDown(Keys.C)

)

{

// Do something here when Ctrl-C is pressed

}

Mouse Input

Mouse Input - Showing the Mouse

this.IsMouseVisible = true;

Mouse Input - Mouse Input?

MouseState mouseState = Mouse.GetState();

if(mouseState.LeftButton == ButtonState.Pressed)

{

// Do whatever you want here

}

Mouse Input - Mouse Input?

• Mouse built-in methods

– LeftMouseButton

– MiddleMouseButton

– RightMouseButton

– XButton1

– XButton2

– X

– Y

– ScrollWheelValue

Mouse Input - Location

• Getting Location

int x = mouseState.X;

int y = mouseState.Y;

Mouse.SetPosition(xLocation, yLocation);

• Setting Location

Xbox(Or Other!) Controller Input

Controller Input

Controller Input

• GamePadState gamePadState = GamePad.GetState(PlayerIndex.One);

if(gamePadState.IsConnected)

{

// then it is connected, and we can do stuff here

}

if(gamePadState.Buttons.X == ButtonState.Pressed)

{

// do something

}

Controller Input

float maxSpeed = 0.1f;

float changeInAngle = gamePadState.Thumbsticks.Left.X * maxSpeed;

// this variable is defined elsewhere

angle += changeInAngle;

Controller Input – Vibration effect!

Controller Input – Vibration Cool effect!

GamePad.SetVibration(PlayerIndex.One, 1.0f, 1.0f);

Audio

Audio

• Audio in XNA

• Audio Suggestions for Games

• A Simple Way to Play Sound Effects in XNA

• A Simple Way to Play Background Music in XNA

• Using XACT

• Using XACT Projects in an XNA Game

• XACT Sound Loops

• 3D Audio Effects: Location

• 3D Audio Effects: Attenuation based on Distance

Audio in XNA

• The Concept

Audio Suggestions For Games

• Audio Suggestions For Games

– royalty free music in google.com

– http://www.incompetech.com/m/c/royalty-free/

– http://www.flashkit.com/

• Use sound in your game. It adds a lot to the game. Don't just ignore it. ( Not in

our uni :( )

Playing Sound Effects

• Adding Sound Effects to your Game

– Managing Content!

Playing Sound Effects

• WAV Audio File (.wav extension)

private SoundEffect effect;

effect = Content.Load<SoundEffect>("SoundFX/ExtraLife");

Playing Sound Effects

• WAV Audio File (.wav extension)

private SoundEffect effect;

effect = Content.Load<SoundEffect>("SoundFX/ExtraLife");

effect.Play();

float volume = 1.0f;

effect.Play(volume);

float volume = 1.0f;

float pitch = -1.0f;

float pan = -1.0f;

bool loop = true;

effect.Play(volume, pitch, pan, loop);

Playing Sound Effects

• SoundEffectInstances class

SoundEffectInstance effectInstance = effect1.Play();

effectInstance.Stop();

Playing Sound Effects

• SoundEffectInstances class

SoundEffectInstance effectInstance = effect1.Play();

effectInstance.Stop();

Playing Background Music

• Using the Song and MediaPlayer Classes to Play Audio

Song song = Content.Load<Song>("song_title");

// Put the name of your song here instead of "song_title"

MediaPlayer.Play(song);

MediaPlayer.IsRepeating = true;

Using XACT

• Cross-platform Audio Creation Tool

• The concept

• Using XACT

– Using XACT

– Using XACT Projects in an XNA Game

– XACT Sound Loops

– 3D Audio Effects: Location

– 3D Audio Effects: Attenuation based on Distance

Using XACT

• Small Tutorials

– http://rbwhitaker.wikidot.com/audio-tutorials

• http://rbwhitaker.wikidot.com/using-xact

• http://rbwhitaker.wikidot.com/playing-sound

• http://rbwhitaker.wikidot.com/xact-sound-loops

• http://rbwhitaker.wikidot.com/3d-audio-effects-location

– Books

• Microsoft Book

• Aaron Reed (O’Reilly)

Video Playback

Video Playback

• Loading the Video in XNA, Game1 Global Scope

Video video;

VideoPlayer player;

Video Playback

• Loading the Video in XNA, Game1 Global Scope

• LoadContent()

Video video;

VideoPlayer player;

video = Content.Load<Video>("AVideoToPlayback");

player = new VideoPlayer();

Video Playback

• Starting the Video

player.Play(video);

Video Playback

• Starting the Video

• Update()

player.Play(video);

if (player.State == MediaState.Stopped)

{

player.IsLooped = true;

player.Play(video);

}

Video Playback

• Looping

player.IsLooped = true;

Video Playback

• Drawing the Video, Draw()

Texture2D videoTexture = null;

if (player.State!= MediaState.Stopped)

videoTexture = player.GetTexture();

Video Playback

• Drawing the Video, Draw()

Texture2D videoTexture = null;

if (player.State!= MediaState.Stopped)

videoTexture = player.GetTexture();

Video Playback

• Drawing the Video, Draw()

Texture2D videoTexture = null;

if (player.State!= MediaState.Stopped)

videoTexture = player.GetTexture();

Video Playback

• Drawing the Video, Draw()

Texture2D videoTexture = null;

if (player.State!= MediaState.Stopped)

videoTexture = player.GetTexture();

Video Playback

• Drawing the Video, Draw()

Texture2D videoTexture = null;

if (player.State!= MediaState.Stopped)

videoTexture = player.GetTexture();

if (videoTexture!= null)

{

spriteBatch.Begin();

spriteBatch.Draw(videoTexture, new Rectangle(0, 0, 400, 300), Color.White); spriteBatch.End();

}