[RESOLU] Effectuer un saut en diagonale

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Exsize
Messages : 11
Inscription : 29 Avr 2020 21:16

[RESOLU] Effectuer un saut en diagonale

Message par Exsize » 29 Avr 2020 21:26

Bonjour

J'aimerais effectuer un saut en diagonale et non exclusivement vers le haut.

J'ai le code suivant pour effectuer le saut vers le haut mais je n'arrive pas à faire que ce saut aille vers la droite :

Code : Tout sélectionner


if (Input.GetKeyUp(KeyCode.E))
        {
            rb2d.AddForce(transform.up  * JumpSpeed, ForceMode2D.Impulse); 
            
        }
        
Je sais que pour effectuer un saut vers la droite le joueur pourrait aussi ce deplacer vers la droite avec le clavier mais le but est que non. Et que le saut serve de déplacement en même temps

Merci Bien d'avance !

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: Effectuer un saut en diagonale

Message par jmhoubre » 29 Avr 2020 21:42

La doc : public void AddForce(Vector2 force, ForceMode2D mode = ForceMode2D.Force);
Là tu utilises une seule direction avec ton transform.up (pas trop compris pourquoi tu utilises transform.up et pas Vector2.up).
Tu devrais utiliser une combinaison de up et de right, quelques chose comme :

Code : Tout sélectionner

private float upForce, rightForce;
rb2d.AddForce((Vector2.up  * upForce + Vector2.right * rightForce), ForceMode2D.Impulse);

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: Effectuer un saut en diagonale

Message par jmhoubre » 29 Avr 2020 21:45

Ha, ok...
Unlike Vector3.up, Transform.up moves the GameObject while also considering its rotation.

Exsize
Messages : 11
Inscription : 29 Avr 2020 21:16

Re: Effectuer un saut en diagonale

Message par Exsize » 29 Avr 2020 23:14

Quand j'utilise cette combinaison, c'est juste une succession de la force vers le haut puis d'un déplacement vers la droite.
Cela ne forme pas un arc de cercle comme ci on lançait un objet.
Peut-être qu'il n'est pas possible de faire un saut en diagonale sur Unity mais ça me paraîtrais bizarre...
Et pour le transfom.up je l'ai prit d'un tuto mais dans les deux cas le résultat est le même, juste un saut vers le haut et non vers le haut et la droite...


Merci quand même de ta réponse

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: Effectuer un saut en diagonale

Message par jmhoubre » 30 Avr 2020 01:22

Je viens de faire un test en 2D, cela fonctionne parfaitement.
Scène vierge. J'ajoute un Sprite (scalé à 3,3,3) avec rigidbody2D et circlecollider (j'ai mis un Knob comme sprite), réglés par défaut. Il y a aussi une petite plate-forme sous la bille pour éviter qu'elle tombe avant d'ajouter la force.
J'ajoute enfin ce script :

Code : Tout sélectionner

using UnityEngine;

public class Test : MonoBehaviour {

	// Mis à 10, 10 dans l'inspecteur.
	[SerializeField] private Vector2 vectorForce;

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

	private void FixedUpdate () {
		if (Input.GetKeyDown (KeyCode.Space)) {
			rb.AddForce ((Vector2.up * vectorForce.y + Vector2.right * vectorForce.x), ForceMode2D.Impulse);
		}
	}
}
Le VectorForce est positionné à (10,10). La bille part vers le haut et à droite, pour exécuter une parabole un peu écrasée certes, mais une parabole quand même. A (10, 20), on a une parabole plus jolie ::d

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: Effectuer un saut en diagonale

Message par jmhoubre » 30 Avr 2020 17:29

Bonjour,
en lisant la documentation, je viens de me rappeler qu'il existe un composant Physics2D Constant Force. On ne sait jamais, il peut te servir.

Exsize
Messages : 11
Inscription : 29 Avr 2020 21:16

Re: Effectuer un saut en diagonale

Message par Exsize » 30 Avr 2020 21:16

Merci beaucoup !

La solution que tu m'as donné fonctionne parfaitement comme je voulais que ça marche.

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

Re: [RESOLU] Effectuer un saut en diagonale

Message par boubouk50 » 30 Avr 2020 21:35

Salut Exsize,

Lorsque la solution est trouvée, pense à passer ton sujet en résolu. Pour cela, il te suffit d'éditer le premier message et d'ajouter [RESOLU] en début de celui-ci.
Je m'en suis occupé cette fois-ci, merci d'y penser les prochaines.

Bon dev.
"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

Répondre

Revenir vers « Scripting »