Contrôler une souris virtuelle avec une manette de jeu dans Unity

Lorsque les joueurs développent des jeux Android pour un large éventail de facteurs de forme, y compris les appareils pliables, les tablettes et les grands écrans, ils connectent souvent des manettes externes. Pour les écrans d'interface utilisateur conçus à l'origine pour les interactions tactiles ou à la souris, la navigation dans les menus à l'aide d'une manette peut être difficile.

Bien que la refonte de l'architecture de votre interface utilisateur autour de la navigation standard à l'aide du pavé directionnel offre généralement une meilleure expérience utilisateur, elle n'est pas toujours réalisable pour les projets existants. Le système d'entrée Unity fournit le VirtualMouseInput composant comme alternative. Ce composant vous permet de contrôler un curseur logiciel virtuel à l'écran à l'aide d'une manette connectée.

À propos de VirtualMouseInput

Le composant VirtualMouseInput est un utilitaire de haut niveau du package Unity Input System qui relie les entrées de la manette au contrôle du curseur à l'écran, aux interactions du pointeur de l'interface utilisateur et aux événements simulés de l'écran tactile. Lorsqu'il est actif :

  • Il crée un appareil de souris virtuel : il enregistre une souris simulée par logiciel dans le système d'entrée Unity, en plus de tout dispositif de pointage physique.
  • Il mappe les commandes de la manette aux actions du curseur : vous pouvez lier des sticks analogiques ou des pavés directionnels pour déplacer le curseur sur l'écran, et mapper les boutons de la manette (comme le bouton Sud / A) pour simuler des clics gauche, droit ou central de la souris.
  • Il s'intègre à l'interface utilisateur Unity : en fonctionnant de manière transparente avec InputSystemUIInputModule, les éléments d'interface utilisateur standards tels que les boutons, les boutons à bascule et les curseurs répondent au curseur virtuel exactement comme ils le feraient à une souris matérielle ou à une interaction tactile.
  • Il contrôle un curseur visuel : il vous permet d'attribuer un Graphic d'interface utilisateur (tel qu'un composant Image) qui suit et affiche automatiquement la position du curseur virtuel à l'écran.

Combiner la souris virtuelle avec TouchSimulation

Si votre jeu a été conçu à l'origine exclusivement pour les écrans tactiles et repose sur des scripts ou des API tactiles directs, une souris virtuelle ne déclenchera pas automatiquement votre logique de détection tactile existante, car elle s'enregistre en tant qu'appareil de souris plutôt qu'en tant qu'appareil à écran tactile.

Pour prendre en charge l'interaction du curseur pilotée par la manette sans réécrire votre code de gestion tactile hérité, vous pouvez utiliser la fonctionnalité TouchSimulation du système d'entrée Unity avec VirtualMouseInput :

  • Fonctionnement : lorsqu'elle est activée à l'aide de TouchSimulation.Enable(), le système d'entrée convertit automatiquement les clics et les mouvements du pointeur de n'importe quel appareil de souris actif, y compris la souris simulée par logiciel créée par VirtualMouseInput, en événements simulés de l'écran tactile.
  • Flux de données résultant : les interactions avec le stick et les boutons de votre manette contrôlent la souris virtuelle, que TouchSimulation traduit ensuite en événements tactiles uniques (Touchscreen). Vos scripts de détection tactile existants peuvent traiter ces événements de manière transparente sans modification du code.
  • Considérations : TouchSimulation est limité à l'émulation du pointeur tactile unique. Si votre gameplay repose sur des gestes multitactiles complexes tels que le pincement pour zoomer ou la rotation à deux doigts, vous devez configurer des liaisons d'actions d'entrée dédiées pour les commandes de votre manette.

Pour obtenir des informations techniques complètes, des propriétés et une documentation sur l'utilisation, consultez les références de script officielles UnityEngine.InputSystem.UI.VirtualMouseInput et UnityEngine.InputSystem.EnhancedTouch.TouchSimulation.