Bonjour,
Je m'excuse d'avance si je ne suis pas dans la bonne section.
Je débute et j'ai un problème avec un player que j'ai dessiné (pour du 2D).
J'ai ajouté à ce player un Rigidbody2D mit les colliders qui vont bien et fait un script qui permet de faire avancer et reculer le personnage.
Sauf que quand j'avance ou recule, les valeurs de vélocité du rigidbody2d prennent des valeurs étrange. Lorsque mon personnage s'arrête, la valeur ne revient pas à zéro par exemple!
Idem lorsque la valeur x est à zéro et que j'avance la valeur reste à zéro tout un moment avant de prendre une valeur quelconque
Normalement, si le personnage avance ou recule la valeur de velocity.x est non nul et si il ne se déplace pas la valeur est nul?
C'est gênant car je me sert de ces valeurs pour faire défiler mon background.
C'est peut-être un comportement normal mais en tant que débutant, je ne sais pas trop.
Il s'agit d'un mauvais réglage du rigidbody2d? il manque un script pour faire ça? ....
Bax
[RESOLU] [DB-AL] Valeurs de la Velocité du Rigidbody2D
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
[RESOLU] [DB-AL] Valeurs de la Velocité du Rigidbody2D
Dernière édition par Baxter le 17 Mars 2019 23:41, édité 1 fois.
Re: [DB-AL] Valeurs de la Velocité du Rigidbody2D
Bonsoir,
Tu ne donnes pas assez d'informations pour pouvoir répondre, à commencer par la méthode employée pour le contrôle de ton player. Passes-tu par les contrôles physiques (conseillé) ?
Poste ton script, cela sera un bon point de départ.
Tu ne donnes pas assez d'informations pour pouvoir répondre, à commencer par la méthode employée pour le contrôle de ton player. Passes-tu par les contrôles physiques (conseillé) ?
Poste ton script, cela sera un bon point de départ.
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
Re: [DB-AL] Valeurs de la Velocité du Rigidbody2D
Bonjour Max,
Oui, avec le script c'est mieux
Oui, avec le script c'est mieux
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class scriptanimation : MonoBehaviour
{
[SerializeField] float Speed = 2f, jumpForce = 500f;
Rigidbody2D rb;
Animator anim;
bool lookRight = true;
[SerializeField] bool grounded;
[SerializeField] float groundRadius = 0.02f;
[SerializeField] Transform groundCheck;
[SerializeField] LayerMask theGround;
// Start is called before the first frame update
void Awake()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, theGround);
anim.SetBool("Grounded", grounded);
float move = Input.GetAxis("Horizontal");
anim.SetFloat("speed", Mathf.Abs(move));
anim.SetFloat("Vspeed", rb.velocity.y);
transform.Translate(Vector2.right * move * Speed * Time.deltaTime);
if (move> 0 && !lookRight)
{
Flip();
}
else if(move < 0 && lookRight)
{ Flip(); }
}
private void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rb.AddForce(new Vector2(0, jumpForce));
}
}
void Flip()
{ lookRight = !lookRight;
Vector2 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Re: [DB-AL] Valeurs de la Velocité du Rigidbody2D
Le contrôle par le traditionnel couple transform + Translate cohabite généralement assez mal avec la physique.
Il faut donc rester sur des commandes liées à la physique, soit par un contrôle direct de la vélocité de ton RigidBody2D, soit en passant par des fonctions du genre AddForce par exemple.
Tu peux t'inspirer par exemple du script fournis dans le StandardAssets (import package 2D avant), comme par exemple PlatformerCharacter2D.cs
Il faut donc rester sur des commandes liées à la physique, soit par un contrôle direct de la vélocité de ton RigidBody2D, soit en passant par des fonctions du genre AddForce par exemple.
Tu peux t'inspirer par exemple du script fournis dans le StandardAssets (import package 2D avant), comme par exemple PlatformerCharacter2D.cs
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
Re: [DB-AL] Valeurs de la Velocité du Rigidbody2D
Merci Max une fois de plus
J'ai remplacé mon script par celui que tu m'a indiqué et je n'ai pas de problème.
En l'adaptant ça va le faire!
Bonne soirée
Bax
J'ai remplacé mon script par celui que tu m'a indiqué et je n'ai pas de problème.
En l'adaptant ça va le faire!
Bonne soirée
Bax