Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Lavorare sul GamePad (il tasto Indietro)

Creare un progetto per la gestione dei pulsanti del GamePad (rappresentati nel telefono dal solo tasto Indietro)
Creare un progetto per la gestione dei pulsanti del GamePad (rappresentati nel telefono dal solo tasto Indietro)
Link copiato negli appunti

Per iniziare a lavorare creiamo un nuovo progetto (dal menu di Visual Studio: File > New project > Windows Phone Game (4.0)) e chiamiamolo SimpleInputManager. Abbiamo già fatto le considerazioni generali sul template di un progetto XNA, cominciamo adesso a lavorare sul GamePad.

XNA fornisce una serie di classi (molte delle nel namespace Microsoft.Xna.Framework.Input) per la gestione degli input dalle diverse periferiche.

GamePadState, in particolare, è la classe (o meglio, la structure) esposta dal framework per leggere gli input provenienti da un gamepad per XBox 360 (nel nostro caso, dal bottone Indietro di WP7).

Tra i metodi esposti da questa classe ve ne sono due che ci forniranno gran parte delle funzionalità da utilizzare nei nostri giochi:

GamePadState è appunto la classe (o, meglio, la structure) esposta dal framework per leggere gli input provenienti da un gamepad per XBox 360 (ovvero, come nel nostro caso, dal bottone di Back della nostra periferica WP7). Tra i metodi esposti dalla classe ve ne sono due, in particolare, che ci forniranno gran parte delle funzionalità di cui avremo bisogno nei nostri giochi:

Metodo Descrizione
bool IsButtonDown(Buttons) determina se un buttone è premuto (pressed)
bool isButtonUp(Buttons) determina se un bottone è sollevato (not pressed)

Aggiungiamo quindi due variabili di tipo GamePadState di cui avremo bisogno più avanti per memorizzare gli input provenienti dal GamePad, più una terza variabile di tipo string per mostrare a video lo stato del gamepad. Queste tre variabili andranno ad aggiungersi alle due (graphics e spriteBatch) già incluse di default nel template:

public class Game : Microsoft.Xna.Framework.Game
{
  GraphicsDeviceManager graphics;
  SpriteBatch spriteBatch;
  GamePadState prevGamePadState;
  GamePadState currGamePadState;
  string gamepadText = "No button pressed yet";
  // ...
}

Nel metodo Update, ora possiamo leggere lo stato corrente di bottoni e joystick (o thumbstick, quando presenti). Salviamo l'input corrente in currGamePadState, mentre prevGamePadState ci servirà per conservare traccia dell'input precedente:

// Salva lo stato corrente del GamePad
prevGamePadState = currGamePadState;
// Legge un nuovo stato del GamePad
currGamePadState = GamePad.GetState(PlayerIndex.One);

Per leggere lo stato del gamepad è necessario ricorrere al metodo statico GetState(PlayerIndex playerIndex) della classe GamePad, il quale accetta come parametro un enum che specifica il controller associato ad ogni giocatore. Lo riportiamo di seguito a scopo puramente illustrativo:

public enum PlayerIndex
{
  One = 0,   // Primo controller
  Two = 1,   // Secondo controller
  Three = 2, // Terzo controller
  Four = 3,  // Quarto controller
}

Anche sotto questo punto di vista la gestione del GamePad su WP7 si presenta dunque semplificata rispetto alle altre piattoforme (dove possono coesistere fino a quattro gamePad), dal momento che è possibile avere un solo e unico "gamePad" connesso (e per di più, con un solo bottone!).


Ti consigliamo anche