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 ?