Page 2 sur 2

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 14:06
par Garfrenix
Quelle blague^^ je refuse de croire que playmaker ne soit pas capable de gerer 2 controller simple move differents

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 14:07
par Max
Si certainement. Playmaker n'est qu'un outil, le reste incombe à l'utilisateur.
Le bout de code que tu as posté il est de toi, ou tu l'as repris d'un exemple ou tuto ?

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 14:30
par Garfrenix
Aucun des deux, c'est le script entier généré par playmaker pour gerer le controller simple move

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 14:54
par Max
Je viens de regarder vite fait, en fait dans l'exemple, quand tu édite, tu as le GetAxisVector, c'est lui qui gère les entrés.

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 15:37
par Garfrenix
En effet ca a plus l'air d'etre la, mais alors ensuite...

Code : Tout sélectionner

namespace HutongGames.PlayMaker.Actions
{
    [NoActionTargets]
	[ActionCategory(ActionCategory.Input)]
	[Tooltip("Gets a world direction Vector from 2 Input Axis. Typically used for a third person controller with Relative To set to the camera.")]
	public class GetAxisVector : FsmStateAction
	{
		public enum AxisPlane
		{
			XZ,
			XY,
			YZ
		}
		
		[Tooltip("The name of the horizontal input axis. See Unity Input Manager.")]
		public FsmString horizontalAxis;
		
		[Tooltip("The name of the vertical input axis. See Unity Input Manager.")]
		public FsmString verticalAxis;
		
		[Tooltip("Input axis are reported in the range -1 to 1, this multiplier lets you set a new range.")]
		public FsmFloat multiplier;
		
		[RequiredField]
		[Tooltip("The world plane to map the 2d input onto.")]
		public AxisPlane mapToPlane;
		
		[Tooltip("Make the result relative to a GameObject, typically the main camera.")]
		public FsmGameObject relativeTo;
		
		[RequiredField]
		[UIHint(UIHint.Variable)]
		[Tooltip("Store the direction vector.")]
		public FsmVector3 storeVector;
		
		[UIHint(UIHint.Variable)]
		[Tooltip("Store the length of the direction vector.")]
		public FsmFloat storeMagnitude;

		public override void Reset()
		{
			horizontalAxis = "Horizontal";
			verticalAxis = "Vertical";
			multiplier = 1.0f;
			mapToPlane = AxisPlane.XZ;
			storeVector = null;
			storeMagnitude = null;
		}

		public override void OnUpdate()
		{
			var forward = new Vector3();
			var right = new Vector3();
			
			if (relativeTo.Value == null)
			{
				switch (mapToPlane) 
				{
				case AxisPlane.XZ:
					forward = Vector3.forward;
					right = Vector3.right;
					break;
					
				case AxisPlane.XY:
					forward = Vector3.up;
					right = Vector3.right;
					break;
					
				case AxisPlane.YZ:
					forward = Vector3.up;
					right = Vector3.forward;
					break;
				}
			}
			else
			{
				var transform = relativeTo.Value.transform;
				
				switch (mapToPlane) 
				{
				case AxisPlane.XZ:
					forward = transform.TransformDirection(Vector3.forward);
					forward.y = 0;
					forward = forward.normalized;
					right = new Vector3(forward.z, 0, -forward.x);
					break;
					
				case AxisPlane.XY:
				case AxisPlane.YZ:
					// NOTE: in relative mode XY ans YZ are the same!
					forward = Vector3.up;
					forward.z = 0;
					forward = forward.normalized;
					right = transform.TransformDirection(Vector3.right);
					break;
				}
				
				// Right vector relative to the object
				// Always orthogonal to the forward vector
				
			}
			
			// get individual axis
			// leaving an axis blank or set to None sets it to 0

			var h = (horizontalAxis.IsNone || string.IsNullOrEmpty(horizontalAxis.Value)) ? 0f : Input.GetAxis(horizontalAxis.Value);
			var v = (verticalAxis.IsNone || string.IsNullOrEmpty(verticalAxis.Value)) ? 0f : Input.GetAxis(verticalAxis.Value);
			
			// calculate resulting direction vector

			var direction = h * right + v * forward;
			direction *= multiplier.Value;
			
			storeVector.Value = direction;
			
			if (!storeMagnitude.IsNone)
			{
				storeMagnitude.Value = direction.magnitude;
			}
		}
	}
}

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 16:48
par Max
Le soucis c'est que cherches à rentrer dans le code généré par Playmaker, alors qu'a la base se n'est pas vraiment prévu. Playmaker est un système de visual scripting qui à pour but justement de t'affranchir de toute ligne de code.
Donc il doit être forcément possible de "programmer" un controller maison juste en restant sur les base de PM et donc son éditeur.
Sinon, tu lâches PM et tu codes directement en C#, au vue de ce que je vois plus haut, cela sera plus simple.

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 19:44
par Garfrenix
Et pourtant je vous promet que j'ai tout retourné dans tous les sens, mais rien, pas avec le controller simple move en tout cas, dans les projets settings input il y a bien les Alt"touches" , et toutes les touches en autant de fois qu'on veut, ce qui laisseraient penser qu'on peut, mais impossible de differencier les deux instances du controller simple move.
J'y ai pensé a passer aux script, mais honnetement la j'ai pas la foi^^ surtout que tout le reste je vois que c'est possible a faire avec PM, je vais pas l'abandonner pour juste ce detail qui marche pas, pas pour l'instant.
Mais merci quand meme de t'etre penché sur ce probleme

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 20:03
par Max
Tu peux tenter de poster sur le forum de PlayMaker (le parcourir aussi, si ce n'est pas déjà fait).
Il faut bien avouer qu'ici les utilisateurs de PM ne sont pas légion, donc pas évident de trouver quelqu'un en mesure de t'aider avec cet outil.

Re: Je cherche a déplacer localement deux personnages

Publié : 14 Mai 2019 20:45
par Garfrenix
Apparement, je pensait voir plus de francais avec playmaker,^^ mais ca fait rien j'ai TROUVE!!!! Enfin, puree que c'etait pas evident ni intuitif. Merci a toi pour ton temps