3. Entrée utilisateur

Ce chapitre fournit une explication concernant les entrées utilisateur.

Détecter les entrées utilisateur

Le texte suivant explique comment activer l'opération de contrôle pour le sprite affiché.

Ouvrez Sample/Tutorial/Sample03_01.

Sample/Tutorial/Sample03_01/AppMain.cs

public static void Initialize ()
{
        graphics = new GraphicsContext();

        shaderProgram = new ShaderProgram("/Application/shaders/sprite.cgx");
        shaderProgram.SetUniformBinding(0, "u_WorldMatrix");

        ImageRect rectScreen = graphics.Screen.Rectangle;

        texture = new Texture2D("/Application/resources/Player.png", false);
        spritePlayer = new SimpleSprite(graphics, texture);
        spritePlayer.Position.X = rectScreen.Width/2.0f;
        spritePlayer.Position.Y = rectScreen.Height/2.0f;
        spritePlayer.Position.Z = 0.0f;

        unitScreenMatrix = new Matrix4(
                 2.0f/rectScreen.Width, 0.0f,   0.0f, 0.0f,
                 0.0f, -2.0f/rectScreen.Height, 0.0f, 0.0f,
                 0.0f,  0.0f, 1.0f, 0.0f,
                -1.0f, 1.0f, 0.0f, 1.0f
        );
}

Le SimpleSprite défini dans le chapitre précédent sera utilisé pour afficher un sprite. Transmettre une référence à GraphicsContext et des exemples de Texture2D au constructeur de sprite. Après avoir généré une instance SimpleSprite, insérez une valeur de position et spécifiez les coordonnées.

Détecter commande d'entrée

GamePad.GetData() est utilisé pour détecter les contrôles entrées. Les entrées sont détectées dans Update().

Sample/Tutorial/Sample03_01/AppMain.cs

public static void Update ()
{
        gamePadData = GamePad.GetData(0);

        int speed = 4;

        if((gamePadData.Buttons & GamePadButtons.Left) != 0)
        {
                spritePlayer.Position.X -= speed;
        }
        if((gamePadData.Buttons & GamePadButtons.Right) != 0)
        {
                spritePlayer.Position.X += speed;
        }
        if((gamePadData.Buttons & GamePadButtons.Up) != 0)
        {
                spritePlayer.Position.Y -= speed;
        }
        if((gamePadData.Buttons & GamePadButtons.Down) != 0)
        {
                spritePlayer.Position.Y += speed;
        }
}

Le numéro de l'appareil est défini dans l'argument de GamePad.GetData(0). En règle générale, 0 marche très bien. Chaque état de touche entrée sera déterminée avec des instructions if. Si la touch est pressée, changez la valeur de spritePlayer.Position et mettez à jour les coordonnées du joueur (L'image de l'avion).

Affectation du clavier

Pour l'exécution avec le simulateur PC, les touches de la manette sont chacune affectée à une touche sur le clavier.

Les Touches sur la manette de jeu Affectations des touches sur le simulateur PC
Touche direction: gauche Curseur: ←
Touche direction: haut Curseur: ↑
Touche direction: droite Curseur: →
Touche direction: bas Curseur: ↓
Bouton: Carré Alphabet: A
Bouton: Triangle Alphabet: W
Bouton: Cercle Alphabet: D
Bouton: Croix Alphabet: S
Bouton: SELECT Alphabet: Z
Bouton: START Alphabet: X
Bouton: L Alphabet: Q
Bouton R Alphabet: E

Pour plus de détails, se référer à: About the PC Simulator.

Essayons de construire et d'exécuter. Le déplacement du joueur est possible avec les touches directionnelles.

image/program_guide/user_input.jpg