Page 1 sur 1

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

Publié : 31 Août 2017 11:38
par Poseidõn
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

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

Publié : 31 Août 2017 11:46
par boubouk50
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).

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

Publié : 31 Août 2017 11:50
par Poseidõn
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é :)

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

Publié : 31 Août 2017 12:05
par evereal
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.

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

Publié : 31 Août 2017 16:46
par Poseidõn
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