Page 1 sur 1

Problème physique saut 2D

Publié : 28 Déc 2018 19:40
par ziropo
Bonsoir,

Je fais un plateformer 2D. Mon personnage se déplace et saute à la mario.

Image

Quand mon personnage saute, il saute actuellement comme en 1. Je veux plutôt qu'il agisse comme en 2, mais il se retrouve toujours propulsé quand je saute en continuant d'avancer sur un coin.

Voilà mon script :

Code : Tout sélectionner


void FixedUpdate(){

	grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);

	float move = Input.GetAxis("Horizontal");

	playerRB.velocity = new Vector2(move * maxSpeed, playerRB.velocity.y);

	if(isJumping == true && Input.GetButton("Jump")){
		if(jumpTimeCounter > 0){
			playerRB.velocity = new Vector2(playerRB.velocity.x, jumpForce);
			jumpTimeCounter -= Time.deltaTime;
		}
		else if(jumpTimeCounter < 0){
			isJumping = false;
		}
	}

}

void Update(){
	if(grounded && Input.GetButtonDown("Jump")){
		isJumping = true;
		jumpTimeCounter = jumpTime;
	}
	if(Input.GetButtonUp("Jump")){
		isJumping = false;
	}
}
Est-ce que quelqu'un aurait une solution ?

Merci d'avance.

Re: Problème physique saut 2D

Publié : 29 Déc 2018 10:08
par Moi 1971
Bonjour,

As-tu essayé de mettre la vélocité de ton objet à zéro juste avant de faire le saut. Ainsi il n'avancera plus pendant le saut.
Je ne connais pas la syntaxe pour le vecteur 2D nul, mais ça devrait ressembler à un truc comme ça :

Code : Tout sélectionner

if(jumpTimeCounter > 0){
	// Ici la modif à faire => La syntaxe est fausse!!!
	playerRB.velocity = Vector2(0, 0);
	// Fin de la modif
	playerRB.velocity = new Vector2(playerRB.velocity.x, jumpForce);
	jumpTimeCounter -= Time.deltaTime;
}
Le problème avec cette manière de faire c'est que l'objet ne peut plus faire de saut en diagonal en prenant de l'élan par exemple...

Re: Problème physique saut 2D

Publié : 30 Déc 2018 16:53
par ziropo
Merci pour la proposition. :)

Effectivement c'est un problème, vu que je veux garder la possibilité de sauter en diagonale.

J'ai essayé entre-temps de détecter si le joueur est collé au mur pendant un saut et l'empêcher d'avancer, ou diminuer sa vélocité tant qu'il n'est pas assez haut pour éviter qu'il force sur le coin de la plateforme.

J'ai pas vraiment trouvé les bons réglages, mais c'est pour moi la meilleure méthode qui me vient.

Finalement, je pinaille, je pense que je vais garder tel quel pour le moment. :]

Merci.