GameInput peut gérer la sortie des appareils. Grâce au retour de force, les appareils d’entrée de jeu peuvent déplacer physiquement une ou plusieurs des commandes d’entrée de l’appareil pour fournir une rétroaction tactile à l’utilisateur. Le retour de force fonctionne avec les appareils d’entrée qui simulent la conduite de véhicules, comme les volants de course et les installations de simulation de vol. Ces appareils contiennent un moteur de retour de force qui applique une force à la commande le long d’un axe. Sur un volant de course, il s’agit d’une force de rotation qui fait tourner le volant pour simuler un scénario en jeu. Utilisez le retour de force avec une manette de vol pour rendre les leviers difficiles à pousser ou à tirer à partir d’une position donnée.
Pour plus d’informations sur les interfaces GameInput qui prennent en charge le retour de force, consultez IGameInputDevice et IGameInputForceFeedbackEffect.
Vérifier la présence d’un moteur de retour de force
Pour créer un effet de retour de force, vous avez besoin de l’interface IGameInputDevice qui représente l’appareil d’entrée auquel vous voulez appliquer l’effet. Après avoir obtenu l’interfaceIGameInputDevice, vérifiez le nombre de moteurs de retour de force de l’appareil en examinant la structure GameInputDeviceInfo. Pour ce faire, appelez IGameInputDevice::GetDeviceInfo. Si l’appareil d’entrée comporte un moteur de retour de force, le membre ForceFeedbackMotorCount de GameInputDeviceInfo a une valeur égale ou supérieure à un.
Création d’un effet de retour de force
Si la structure GameInputDeviceInfo d’un appareil indique qu’il possède un ou plusieurs moteurs de retour de force, créez un effet de retour de force pour l’appareil en appelant IGameInputDevice::CreateForceFeedbackEffect, comme le montre le code suivant.GameInputForceFeedbackParams correspondante.
Par exemple, pour créer un effet de rétroaction avec un comportement de ressort, GameInputForceFeedbackParams se compose de la valeur GameInputForceFeedbackSpring de GameInputForceFeedbackEffectKind et de la structure GameInputForceFeedbackConditionParams pour un ressort. Remplissez les paramètres correspondant à la valeur de l’énumération GameInputForceFeedbackEffectKind choisie.
Après avoir sélectionné l’effet du moteur de retour de force à l’aide de son index et créé la structure GameInputForceFeedbackParams, appelez IGameInputDevice::CreateForceFeedbackEffect pour créer l’effet. Celui-ci est représenté par une interface IGameInputForceFeedbackEffect.
La durée de vie de l’effet de retour de force est associée à l’interface IGameInputForceFeedbackEffect créée. Lorsque l’effet est créé, il est chargé dans l’appareil. Lorsque la dernière référence est libérée, l’effet de retour de force est arrêté et déchargé du moteur de l’appareil.
Application et mise à jour des effets de retour de force
Lorsqu’un effet de retour de force est créé, il est chargé directement dans le moteur de l’appareil. Un moteur de retour de force dispose d’une quantité limitée de mémoire. Cela limite le nombre d’effets de retour de force qui peuvent être chargés et joués en même temps. Si vous appelez IGameInputDevice::CreateForceFeedbackEffect après avoir atteint cette limite, la fonction retourne une erreur. Après sa création, un effet de retour de force est chargé dans le moteur de retour de force à l’état arrêté. Une fois qu’il est chargé, utilisez l’interface IGameInputForceFeedbackEffect pour définir l’état de l’effet àRunning. L’effet est alors joué sur le moteur de l’appareil.
États d’un effet de retour de force
Un effet de retour de force passe par plusieurs états pour correspondre à l’état actuel du jeu. Il est important de mettre à jour l’état d’un effet et d’en prendre note en fonction de votre jeu afin de maintenir le comportement attendu. Les états du retour de force peuvent être définis selon GameInputFeedbackEffectState, comme le montre le code suivant.Stopped. Si un effet de rétroaction nouveau ou arrêté est défini à l’état Running, il est joué depuis le début. Si l’état est défini à Paused, l’effet de retour de force cesse d’agir sur le moteur. Toutefois, si un effet à l’état Paused est défini à Running, l’effet de retour de force reprend son modèle là où il s’était arrêté.
Arrêter un effet y met fin, mais vous pouvez le déclencher de nouveau plus tard. Par exemple, lorsqu’un utilisateur quitte un terrain accidenté dans un jeu de course. De même, la mise en pause d’un effet est utile dans les situations où le jeu ne change pas, mais où l’utilisateur veut naviguer dans l’interface utilisateur, comme un menu de pause.
Définissez l’état d’un effet de retour de force en appelant IGameInputForceFeedbackEffect::SetState.
Mise à jour d’un effet de retour de force
Ajustez le gain d’un effet de retour de force ou fournissez un nouvel ensemble de paramètres si la nouvelle structure GameInputForceFeedbackParams partage la même valeur d’énumération GameInputForceFeedbackEffectKind.Gain
Modifiez l’intensité d’un effet de retour de force en ajustant son gain à l’aide de la fonction IGameInputForceFeedbackEffect::SetGain, comme le montre le code suivant.Définition de nouveaux paramètres
Fournissez de nouveaux paramètres pour un effet de retour de force à l’aide de la fonction IGameInputForceFeedbackEffect::SetParams, comme le montre le code suivant.GameInputForceFeedbackConstant.
