[RESOLU]probléme mouvement d'une sphère

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
Poseidõn
Messages : 9
Inscription : 28 Août 2017 16:36

[RESOLU]probléme mouvement d'une sphère

Message par Poseidõn » 31 Août 2017 11:38

Tout d'abord Bonjour a tous,
Je suis contrit de vous ennuyer en une si belle journée d'aout mais j'ai un petit soucis.
Blague a part ^^ j'ai un script pour déplacer ma sphère qui fonctionne mais petit soucis.
Je vous met mon script suite a quoi je vous explique mon problème si vous souhaitez m'aider j'en serais heureux :).

Code : Tout sélectionner

public class PlayerController : MonoBehaviour {
	public float speed;
	private Rigidbody rb;
	public Camera cm;

	void Start ()
	{
		rb = GetComponent<Rigidbody> ();
	}

	void Update ()
	{
		if(Input.GetKeyDown (KeyCode.UpArrow)) {
			rb.AddForce (cm.transform.forward * Time.deltaTime * speed);
		}
	}
}
voila le script en question, le problème ici étant qui ma sphère bouge bien mais pas des masses, pour avoir un mouvement significatif il faut que j'appuie 20 fois sur la touche. Ce que je veut et que j'arrive pas a trouver, c'est que ma sphère bouge tant que UpArrow est enfoncé.

Dans le cas ou je crée un doublon au niveau des sujet je suis désolé.

Merci d'avance,

Cordialement,

Poseidõn
Dernière édition par Poseidõn le 31 Août 2017 16:46, édité 1 fois.
Merci d'avance,

Cordialement,

Poseidõn

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6246
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: probléme mouvement d'une sphère

Message par boubouk50 » 31 Août 2017 11:46

Salut,
Pour ma part il s'agirait de la force appliquée qui est trop petite. En augmentant speed, par exemple, ça devrait le faire.
Aussi, au niveau de la physique, vérifie ta friction (il me semble de tête) qui génère des frottements au sol donc un ralentissement. Je crois que si friction à 0 alors pas de frottements.
Dernière chose, pour la physique, il est plus approprié de mettre le code dans un fixedUpdate () plutôt que l'Update (). (Je le lis à longueur de temps sur ce forum, mais ne peux être sûr de t'expliquer pourquoi).
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Poseidõn
Messages : 9
Inscription : 28 Août 2017 16:36

Re: probléme mouvement d'une sphère

Message par Poseidõn » 31 Août 2017 11:50

En augmentant la vitesse ça ne change pas grand chose le problème ces que il faut que j’appuie plusieurs fois pour que cela bouge beaucoup, si je reste appuyé sur la touche ça va avancer juste un petit peu et ces tout :/ après au niveau de la friction saurais-tu me dire ou est-ce que je trouve ce paramètre? (oui je suis un débutant sur unity'^^)

Merci pour l'aide apporté :)
Merci d'avance,

Cordialement,

Poseidõn

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: probléme mouvement d'une sphère

Message par evereal » 31 Août 2017 12:05

Hello,

GetKey Returns true while the user holds down the key identified by name. Think auto fire.
GetKeyDown Returns true during the frame the user starts pressing down the key identified by name.

dans ton cas tu devrais plutot utiliser le GetKey ;)

Comme dit Boubouk il vaut mieu prendre l'habitude de mettre tout ce qui concerne la physique dans le fixedupdate, ca évite des incohérence du genre avoir un personnage qui se déplacera plus vite en fonction du frame per second.

Par contre la récupération des touches elle doit rester dans update() (ca marche tres tres mal de mettre ces fonctions dans fixedupdate)

Vu que tu débute tu px te permettre de tout laisser dans update pour le moment.
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”

Poseidõn
Messages : 9
Inscription : 28 Août 2017 16:36

Re: probléme mouvement d'une sphère

Message par Poseidõn » 31 Août 2017 16:46

Bonsoir,

Alors oui effectivement cela fonctionne mieux avec GetKey, mais j'avais un petit soucis ces que ma sphère ne s’arrêtait pas.
J'ai résolu du coup le problème de l’arrêt en mettant dans RigidBody Drag a 1.

Le code en question est celui-ci:

Code : Tout sélectionner


public class PlayerController : MonoBehaviour {
	public float speed;
	private Rigidbody rb;
	public Camera cm;

	void Start ()
	{
		rb = GetComponent<Rigidbody> ();
	}

	void FixedUpdate ()
	{
		if(Input.GetKey (KeyCode.UpArrow)) {
			rb.AddForce (cm.transform.forward * Time.deltaTime * speed);
		}
	}
}

Je vous remercie de m'avoir aidé, je met le sujet en résolu de ce pas.

Cordialement,

Poseidõn
Merci d'avance,

Cordialement,

Poseidõn

Répondre

Revenir vers « (C#) CSharp »