[MY-AL] Velocity perte de vitesse sur une pente
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
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
[MY-AL] Velocity perte de vitesse sur une pente
Bonjours à tous,
Voilà je suis sur un jeu 2D, et j'ai un petit problème au niveau de mon controller. J'utilise un rigidbody2D.velocity() pour le déplacement.
Mais quand mon personnage franchis une pente (par exemple un escalier sur lequel on a aplatit le collider en diagonal), il ralentit. Et j'aimerais pallier à ce problème.
J'ai essayé de réduire les Linear Drag au maximum comme l'angular Draq, cela n'as rien changé au problème.
Auriez-vous des suggestions ?
Merci d'avance.
Voilà je suis sur un jeu 2D, et j'ai un petit problème au niveau de mon controller. J'utilise un rigidbody2D.velocity() pour le déplacement.
Mais quand mon personnage franchis une pente (par exemple un escalier sur lequel on a aplatit le collider en diagonal), il ralentit. Et j'aimerais pallier à ce problème.
J'ai essayé de réduire les Linear Drag au maximum comme l'angular Draq, cela n'as rien changé au problème.
Auriez-vous des suggestions ?
Merci d'avance.
- boubouk50
- ModoGenereux
- Messages : 6221
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [MY-AL] Velocity perte de vitesse sur une pente
La physique 2D n'est pas mon fort, mais de ce que je sais depuis la documentation officielle:
The value is not usually set directly but rather by using forces. The velocity can also gradually decay due to the effect of drag if this is enabled.
Il est préférable d'utiliser des forces plutôt que de directement modifier la vélocité.
La vélocité est graduellement réduite à cause des drags.
Peut-être déjà faut-il essayer d'utiliser le système physique d'Unity correctement au lieu d'essayer de faire sa sauce?
Je ne connais pas ton niveau en Prog et Unity, donc bon.
Qui plus est, tu es dans la section Code, et tu ne donnes pas de code... Mauvaise section ou bien poste ton code.
The value is not usually set directly but rather by using forces. The velocity can also gradually decay due to the effect of drag if this is enabled.
Il est préférable d'utiliser des forces plutôt que de directement modifier la vélocité.
La vélocité est graduellement réduite à cause des drags.
Peut-être déjà faut-il essayer d'utiliser le système physique d'Unity correctement au lieu d'essayer de faire sa sauce?
Je ne connais pas ton niveau en Prog et Unity, donc bon.
Qui plus est, tu es dans la section Code, et tu ne donnes pas de code... Mauvaise section ou bien poste ton code.
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [MY-AL] Velocity perte de vitesse sur une pente
Bonjour à toi.
Voilà mon code que j'ai en effet oublié de coller sur mon post :
De plus désolé si j'utilise mal la physique d'unity comme ton message semble le souligner, mais il me semblait bien faire.
Voilà mon code que j'ai en effet oublié de coller sur mon post :
Code : Tout sélectionner
private void FixedUpdate()
{
inputHorizontal = Input.GetAxis("Horizontal" + controller);
isGrounded = Physics2D.OverlapBox(boxCheckgrounded.transform.position, boxCheckgrounded.size / 2, 0, whatIsGround); // Détecte une plateforme sous les pieds du joueur
if (isGrounded) // Si le personnage touche le sol
{
if (inputHorizontal != 0 )
Run();
}
}
private void Run()
{
if (inputHorizontal == 1)
{
rigidBody2D.velocity = new Vector2(moveVelocity * Time.deltaTime, 0);
}
else if (inputHorizontal == -1)
{
rigidBody2D.velocity = new Vector2(-moveVelocity * Time.deltaTime, 0);
}
}
- boubouk50
- ModoGenereux
- Messages : 6221
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [MY-AL] Velocity perte de vitesse sur une pente
Merci de mettre ton code au complet. Je ne sais pas ce qu'est moveVelocity qui est la variable la plus importante de ton code... Je suppose que c'est une variable fixe?
Pour la physique, il est normalement préférable d'utiliser un AddForce () et de border la vélocité. Maintenant tout dépend de ton gamePlay je dirai.
Ici, tu joues sur la vélocité seulement sur un axe, alors que dans une pente il devrait se déplacer aussi vers le haut ou le bas. Je suppose donc que ton personnage tombe et donc qu'il n'est pas tout le temps sur le sol donc n'avance pas à chaque frame.
Essaie, à titre de test, de solliciter aussi l'axe y:Ainsi, la vélocité en y sera conservée plutôt que supprimée, ce qui voulait dire que ton personnage avance tout droit uniquement.
Question: inputHorizontal est bien un entier? Pas un float?
Pour la physique, il est normalement préférable d'utiliser un AddForce () et de border la vélocité. Maintenant tout dépend de ton gamePlay je dirai.
Ici, tu joues sur la vélocité seulement sur un axe, alors que dans une pente il devrait se déplacer aussi vers le haut ou le bas. Je suppose donc que ton personnage tombe et donc qu'il n'est pas tout le temps sur le sol donc n'avance pas à chaque frame.
Essaie, à titre de test, de solliciter aussi l'axe y:
Code : Tout sélectionner
private void Run()
{
if (Mathf.Abs (inputHorizontal) == 1) //Teste la valeur abslue de inputHorizontal pour avoir qu'un seul cas
rigidBody2D.velocity = new Vector2(inputHorizontal * moveVelocity * Time.deltaTime, rigidBody2D.velocity.y);
}
}
Question: inputHorizontal est bien un entier? Pas un float?
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [MY-AL] Velocity perte de vitesse sur une pente
Je ne peux pas mettre tout le code car y'a beaucoup de lignes qui gèrent autre chose donc inutile pour notre cas, ça ne sert à rien de vous embrouiller avec le surplus.
moveVolocity est un public float et inputHorizontal est un float avec la sensibilité des axes augmentées pour que je n'ai que 1, 0 ou -1
J'ai essayé ce que tu m'as envoyé et cela fonctionne plutôt bien je te remercie. J'étais partis sur une augmentation dynamique de la vitesse pour palier à la pente >< Je te remercie de ton aide.
moveVolocity est un public float et inputHorizontal est un float avec la sensibilité des axes augmentées pour que je n'ai que 1, 0 ou -1
J'ai essayé ce que tu m'as envoyé et cela fonctionne plutôt bien je te remercie. J'étais partis sur une augmentation dynamique de la vitesse pour palier à la pente >< Je te remercie de ton aide.
- boubouk50
- ModoGenereux
- Messages : 6221
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [MY-AL] Velocity perte de vitesse sur une pente
Si horizontalInput ne peut que prendre -1, 0 ou 1, autant le passer en entier, sinon les conditions == pourraient ne pas fonctionner correctement.
Aussi, la condition de la fonction Run est obsolète vu que tu testes déjà si horizontalInput != 0 dans le fixedupdate (). Run () n'a donc qu'une seule ligne.
Aussi, la condition de la fonction Run est obsolète vu que tu testes déjà si horizontalInput != 0 dans le fixedupdate (). Run () n'a donc qu'une seule ligne.
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [MY-AL] Velocity perte de vitesse sur une pente
l e ralentissement de ton perso vient du fait que que tu lui applique une force(la velocité) sur un axe droit mais lorsque ton perso essaie de monter un plan incliné il faudrait que la direction de la force soit modifiée pour avoir le meme angle que le plan incliné, car comme tu fais actuellement tu demande a ton perso d'aller tout droit quoi qu'il arrive et lui, il a plus envie de traverser le plan incline que de le monter.
je pense meme que si ta velocite etait assez forte il traverserai et ne monterai meme pas
je pense meme que si ta velocite etait assez forte il traverserai et ne monterai meme pas
Re: [MY-AL] Velocity perte de vitesse sur une pente
A l'aide d'un raycast vers le sol tu pourrais obtenir la normal au plan (sol) et faire ton calcule pour déterminer l'angle de la pante et du coup la direction a donner à ton personnage.