Home Page Twitter Facebook Feed RSS
NotJustCode
Apri

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

Link