Page 1 sur 2

Je cherche a déplacer localement deux personnages

Publié : 13 Mai 2019 16:54
par Garfrenix
Bonjour, mon problème est tout simple, pourtant je ne trouve nul part de solutions, alors je m'en remet a vous.
Dans mon jeu je voudrais que deux joueurs sur le même ordinateur déplacent chacun leur personnage avec des touches différentes du clavier.
J'utilise donc playmaker et "controller simple move".
Mais évidement les contrôles de bases deplacent les deux personnages en même temps, j'ai bien trouver comment changer les contrôles dans "projects settings-input", mais je ne sais pas comment les appliquer a un seul des personnages.
Auriez vous des solutions svp?

Re: Je cherche a déplacer localement deux personnages

Publié : 13 Mai 2019 17:40
par Max
Bonjour,
Garfrenix a écrit :
13 Mai 2019 16:54
Mais évidement les contrôles de bases deplacent les deux personnages en même temps, j'ai bien trouver comment changer les contrôles dans "projects settings-input", mais je ne sais pas comment les appliquer a un seul des personnages.
A la base tu dois définir des touches bien distincts pour chacun des deux joueurs (bon ça j’imagine que je ne t'apprends rien). En suite, chaque joueur doit disposer d'un controller qui lui est propre pour gérer leurs déplacements, avec pour chacun les touches qui vont bien d'assignées.
Le principe, il est là.

Re: Je cherche a déplacer localement deux personnages

Publié : 13 Mai 2019 17:55
par Garfrenix
Justement mon problème est bien la, je ne sais pas ou aller pour assigner les touches pour un seul joueur, si je les change dans projets settings -input, ca les changera pour tout les "controller simple move" de mon projets, et donc ca les changera en même temps pour les deux joueurs.
"chaque joueur doit disposer d'un controller qui lui est propre" , c'est a dire? c'est la que quelque chose m'échappe^^ Je ne peut pas appliquer les paramétre de "input" a un seul des deux persos

Re: Je cherche a déplacer localement deux personnages

Publié : 13 Mai 2019 18:37
par Max
Pour contrôler le mouvements de chaque joueur, je suppose que tu as un script (via Playmaker).
Chaque joueur se voit assigner ce script. A ceci près, qu'il faut en données publiques (on va simplifier) les noms des inputs à assigner via l'inspector pour chaque contrôle de chaque joueur.
En gros, cela pourrait ressembler à ceci pour deux joueurs (et pour un seul input):

Image

Re: Je cherche a déplacer localement deux personnages

Publié : 13 Mai 2019 19:21
par Garfrenix
D'accord, je comprend la logique, mais je n'ai pas la ligne "namekey" sous mon playmaker, dans mon inspector sous mon playmaker j'ai:
-Deplacement (donc le nom de ce FSM)
-Controle (qui me renvois juste a ma variable déplacement)
-Debug

et c'est tout :/ je ne comprend pas d'ou sors ta ligne namekey

Re: Je cherche a déplacer localement deux personnages

Publié : 13 Mai 2019 21:24
par Max
Namekey est un nom arbitraire que j'ai donné pour l'exemple.
Après au niveau de Playmaker, je ne connais pas, donc je ne pourrais pas vraiment t'aider pour arriver à modifier le programme pour arriver au résultat souhaité.
Tu dois pouvoir définir des données publiques j'imagine. Données qui doivent pouvoir correspondre au type et nom d'Input que tu veux définir. A voir dans cette direction.

Re: Je cherche a déplacer localement deux personnages

Publié : 13 Mai 2019 21:40
par Garfrenix
j'imagine que oui, mais rien trouver en fouillant partout, je tomberai dessus un jour sans faire exprés je pense^^ merci a toi quand meme

Re: Je cherche a déplacer localement deux personnages

Publié : 13 Mai 2019 21:42
par Max
En script, sur le principe cela donnerait quelque chose comme:

Code : Tout sélectionner

    public string namekey1;

    void Update()
    {
        if (Input.GetButton(namekey1))
        {
            // actions
        }

    }

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 13:03
par Garfrenix
Voila qui ne m'arrange pas.. Voici le script de mon controller simple move, mais aucune mention des touches ni input, une idée de quoi changer?

Code : Tout sélectionner

{
	[ActionCategory(ActionCategory.Character)]
	[Tooltip("Moves a Game Object with a Character Controller. See also Controller Simple Move. NOTE: It is recommended that you make only one call to Move or SimpleMove per frame.")]
	public class ControllerMove : FsmStateAction
	{
		[RequiredField]
		[CheckForComponent(typeof(CharacterController))]
		[Tooltip("The GameObject to move.")]
		public FsmOwnerDefault gameObject;
		
		[RequiredField]
		[Tooltip("The movement vector.")]
		public FsmVector3 moveVector;
		
		[Tooltip("Move in local or word space.")]
		public Space space;
		
		[Tooltip("Movement vector is defined in units per second. Makes movement frame rate independent.")]
		public FsmBool perSecond;
		
		private GameObject previousGo; // remember so we can get new controller only when it changes.
		private CharacterController controller;
		
		public override void Reset()
		{
			gameObject = null;
			moveVector = new FsmVector3 {UseVariable = true};
			space = Space.World;
			perSecond = true;
		}

		public override void OnUpdate()
		{
			var go = Fsm.GetOwnerDefaultTarget(gameObject);
			if (go == null) return;
		
			if (go != previousGo)
			{
				controller = go.GetComponent<CharacterController>();
				previousGo = go;
			}
			
			if (controller != null)
			{
				var move = space == Space.World ? moveVector.Value : go.transform.TransformDirection(moveVector.Value);

				if (perSecond.Value)
				{
					controller.Move(move * Time.deltaTime);
				}
				else
				{
					controller.Move(move);
				}
			}
		}
	}
}

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 14:00
par Max
Visiblement les inputs ne sont pas gérés par ce script.