Local multiplayer : problème de transition d'input et de controller
Publié : 02 Oct 2023 11:19
Bonjour à tous,
J'ai une première scène pour que les joueurs choisissent une couleur et une deuxième scène pour que les joueurs se battent.
Dans la première scène j'utilise la ligne de script suivante pour ajouter "ranger " dans une variable _playerController le controleur du joueur :
Ensuite dans la deuxième scène, j'utilise la ligne de code suivante pour reconnecter le bon controlleur au bon joueur :
Mais voilà le problème :
si un joueur rejoint la partie en utilisant le clavier dans la première scène, il peut se déplacer avec le clavier et regarder dans la direction où pointe la souris car dans son Composant "Player Input", il y a sur la ligne "devices" : Devices = Keyborad; Mouse. Puis en deuxième scène, le même joueur peut réutiliser ce même clavier pour jouer dans la deuxième scène MAIS plus avec la souris car on lui a seulement donné le _playerController.devices[0] et non le _playerController.devices[1]. Et dans la deuxième scène sur la ligne "device", il n'y a en fait que le clavier "Devices = Keyboard". Si le joueur, dans la première scène, rejoint le jeu en utilisant la souris, la ligne des devices devient Devices = Mouse;Keyboard. Ainsi dans la première scène rien ne change (le joueur peut utiliser le clavier et la souris). Mais dans la deuxième scène, ce joueur n'a que la souris dans devices, il ne peut donc plus bouger, il ne peut que regarder là où pointe la souris.
J'ai donc essayé :
et
Mais cela n'a pas arrangé le problème.
Dans Unity mon control scheme est "Keyboard&Mouse" et les deux input sont bien séléctionnés
Je précises que du coup, si les joueurs utilisent un gamepad, il n'y a aucun problème
Est ce que quelqu'un peut m'aider ?
J'ai une première scène pour que les joueurs choisissent une couleur et une deuxième scène pour que les joueurs se battent.
Dans la première scène j'utilise la ligne de script suivante pour ajouter "ranger " dans une variable _playerController le controleur du joueur :
Code : Tout sélectionner
public static Dictionary<int, InputDevice> _playerController = new Dictionary<int,InputDevice>();
.
.
.
_playerController.Add(index, controller.devices[0]);
Code : Tout sélectionner
player1 = PlayerInput.Instantiate(_playerPrefab, player.Key, playerControlScheme, -1, playerController);
si un joueur rejoint la partie en utilisant le clavier dans la première scène, il peut se déplacer avec le clavier et regarder dans la direction où pointe la souris car dans son Composant "Player Input", il y a sur la ligne "devices" : Devices = Keyborad; Mouse. Puis en deuxième scène, le même joueur peut réutiliser ce même clavier pour jouer dans la deuxième scène MAIS plus avec la souris car on lui a seulement donné le _playerController.devices[0] et non le _playerController.devices[1]. Et dans la deuxième scène sur la ligne "device", il n'y a en fait que le clavier "Devices = Keyboard". Si le joueur, dans la première scène, rejoint le jeu en utilisant la souris, la ligne des devices devient Devices = Mouse;Keyboard. Ainsi dans la première scène rien ne change (le joueur peut utiliser le clavier et la souris). Mais dans la deuxième scène, ce joueur n'a que la souris dans devices, il ne peut donc plus bouger, il ne peut que regarder là où pointe la souris.
J'ai donc essayé :
Code : Tout sélectionner
player1 = PlayerInput.Instantiate(_playerPrefab, player.Key, playerControlScheme, -1, Keyboard.current, Mouse.current);
Code : Tout sélectionner
player1.SwitchCurrentControlScheme("Keyboard&Mouse", Keyboard.current, Mouse.current);
Dans Unity mon control scheme est "Keyboard&Mouse" et les deux input sont bien séléctionnés
Je précises que du coup, si les joueurs utilisent un gamepad, il n'y a aucun problème
Est ce que quelqu'un peut m'aider ?