[RESOLU][DB-AL]Direction du joystick

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Ynua
Messages : 13
Inscription : 07 Nov 2018 15:21

[RESOLU][DB-AL]Direction du joystick

Message par Ynua » 06 Déc 2018 15:38

Bonjour, dans le cadre de mon projet de jeu 3D, j'ai voulu réaliser un joystick pour pouvoir jouer sur une plateforme mobile.
Le problème étant que mon code fonctionne mais qu'il ne va pas dans la direction que je souhaiterai. Je m'explique:

Code : Tout sélectionner

public Joystick joystick;

	void Update ()
	{
		var rigidbody = GetComponent<Rigidbody>();

		rigidbody.velocity = new Vector3(joystick.Horizontal * 40, rigidbody.velocity.y, joystick.Vertical * 40);
	}
Ce code fait avancer mon personnage de gauche à droite et d'avant en arrière. Sauf que j'aimerai que mon personnage avance de gauche à droite et de haut en bas (puisqu'il avance seul avec une coroutine).
J'ai donc essayer de remplacer cette ligne " rigidbody.velocity.y " par ceci " rigidbody.velocity.z ", mais ça fait avancer mon personnage autant de haut en bas que d'avant en arrière (en fait il avance en diagonale), et je n'ai aucune idée de comment résoudre ceci.

J'attend vos conseils avec impatience et vous remercie d'avance de votre aide. Bonne journée ! :super:
Dernière édition par Ynua le 06 Déc 2018 17:01, édité 1 fois.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [DB-AL]Direction du joystick

Message par EmileF » 06 Déc 2018 16:30

Salut

normalement la valeur x de rigidbody.velocity commande un mouvement vers la droite ou gauche
la valeur y commande un mouvement vers le haut ou le bas
et la valeur z commande un mouvement vers l'avant ou l'arrière

Dans ton script le "rigidbody.velocity.y" dans ta fonction rigidbody.velocity ne sert à rien car comme cette valeur n'est modifiée nulle par elle sera toujours à zero.

Si tu l'as remplace par "rigidbody.velocity.z" tu auras un mouvement en diagonale parce que tu l'as modifie avec la valeur "joystick.Vertical * 40" que tu appliques sur la valeur z .

pour avoir un mouvement horizontal. mets 0 à la valeur y de ton velocity et "joystick.Vertical * 40" a la valeur z
et pour avoir un mouvement vertical mets "joystick.Vertical * 40" à la valeur y et la valeur z à 0 donc ta commande rigidbody.velocity doit ressembler à ceci:

Code : Tout sélectionner

rigidbody.velocity = new Vector3(joystick.Horizontal * 40, joystick.Vertical * 40, 0);
je ne suis pas sur d'avoir été très clair

en cas de question on est là...
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Ynua
Messages : 13
Inscription : 07 Nov 2018 15:21

Re: [DB-AL]Direction du joystick

Message par Ynua » 06 Déc 2018 17:01

Salut, et merci !

Si, si, rassure toi, tes explications étaient clairs. Je me suis doutée que le problème venait de là mais je n'ai pas du tout pensé à inverser "joystick.Vertical * 40" et 0, et forcément maintenant que tu le dis ça me paraît logique.
En tout cas merci infiniment, ça fonctionne comme je veux, c'est super !

Je passe le sujet en résolu, merci encore et bonne journée à toi ! :super:

Répondre

Revenir vers « (C#) CSharp »