Controller di Gioco 7073 Visite) DirectX 11
Un altro degli aspetti che DirectX é in grado di gestire é il controllo delle periferiche di input.
Fino a qualche anno fa la libreria di riferimento era DirectInput che forniva un'interfaccia per leggere informazioni da qualsiasi tipo di periferica, mouse, tastiere e qualsiasi tipo di joypad e joystick.
Dopo l'uscita di XBox però è iniziato un processo di standardizzazione che ha portato alla nascita delle periferiche XInput, simili a quelle delle console. La stessa Xbox é inoltre compatibile con Windows tanto che ormai la configurazione di queste periferiche é diventato uno standard.
Sono nate quindi le librerie XInput. Queste, a differenza delle directInput, forniscono il controllo dei soli gamepad compatibili XBox lasciando ai sistemi tradizionali la gestione di mouse e tastiere.
SharpDX ci offre anche queste librerie. Importiamo il giusto Assembly e namespace
using SharpDX.XInput;
Quindi creiamo il nostro controller
Controller controller1 = new Controller(UserIndex.One);
Possiamo
creare fino a 4 controller.
Ora per controllare che il gamepad sia acceso e collegato
controller1.IsConnected
Quindi, se collegato, leggiamo lo stato attuale
Gamepad pad = controller1.GetState().Gamepad;
Pad contiene lo stato del controller al momento della lettura.
Le proprietà da usare sono:
Buttons:
contiene in or logico lo stato dei pulsanti e della croce a sinistra (DPad) Per sapere se un pulsante é premuto verificate se é vera questa condizione
(pad.Buttons & GamepadButtonFlags.A) != 0
Se usate il Framework 4.5 potete usare il metodo hasFlags
pad.Buttons.HasFlags(GamepadButtonFlags.A).
GamepadButtonFlags comprende tutti i pulsanti utilizzabili.
Trigger:
pad.LeftTrigger e pad.RightTrigger restituiscono la pressione dei 2 grilletti posteriori
Axis:
pad.LeftThumbX e pad.LeftThumbY restituiscono la posizione della levetta sinistra. RightThumbX e RightThumbY per la destra.
XInput restituisce altre informazioni, ad esempio lo stato della batteria
controller1.GetBatteryInformation(BatteryDeviceType.Gamepad).BatteryLevel
Come vedete l'utilizzo é molto semplice, vi basterà inserire la lettera in modo che venga eseguita correttamente e potrete utilizzarlo nelle vostre applicazioni e giochi
Vedete il demo TutorialI1 per vedere l'utilizzo di un controller all'opera. Avrete bisogno di un controller XBox compatibile per poterlo utilizzare