Problème saut Unity, variable isGrounded

Fermé
Gglebgdu78 Messages postés 3 Date d'inscription vendredi 30 octobre 2020 Statut Membre Dernière intervention 4 mai 2022 - Modifié le 4 mai 2022 à 18:43
Gglebgdu78 Messages postés 3 Date d'inscription vendredi 30 octobre 2020 Statut Membre Dernière intervention 4 mai 2022 - 4 mai 2022 à 22:08
Bonjour,

je commence a développer un jeu en 2D sur unity, cependant les tutoriels datant d'il y a assez longtemps, les programmes ne sont plus vraiment à jour. J'ai essayer de régler le saut infini grâce à des tag "Ground" mis sur mes "fondations" pour que le joueur détecte qu'il est sur un tag "Ground" et donc isGrounded passe a true, sinon false. Cependant, le tag ne se met a jour que lorsque le joueur se déplace, fin c'est bizarre, et donc le booléen isGrounded, ne se met pas a jour et donc reste a false alors que le joueur est sur le sol donc impossible de sauter. Bref, j'explique assez mal, voici le code, j'espère que vous pourrez m'aider:
using UnityEngine;

public class PlayerMove : MonoBehaviour
{
    public float moveSpeed;
    public float jumpForce;

    public SpriteRenderer rend;

    public bool isGrounded = true;
    public Rigidbody2D rb;
    private Vector3 velocity = Vector3.zero;


    void Start ()
    {
     rend = GetComponent<SpriteRenderer>();
    }
    
 

   void Update()
   {
        
        

        float horizontalMovement = Input.GetAxis("Horizontal") * moveSpeed * UnityEngine.Time.deltaTime;
        
          if(Input.GetKeyDown(KeyCode.Space) && isGrounded == true)
                {
   Jump();
  }
        

        if (horizontalMovement > 0)
        {
            rend.flipX = false;
        }
         
        if (horizontalMovement < 0)
        {
            rend.flipX = true;
        }
         


            MovePlayer(horizontalMovement);
   }

 void Jump() 
        {
         rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
 }

 void OnCollisionEnter2D(Collision2D col)
        {
  if(col.gameObject.CompareTag("Ground"))
         }



même avec des bases solides en C++ je ne comprend pas vraiment puisque le script est en C sharp.
Merci beaucoup
Cordialement

Configuration: Windows / Firefox 89.0

1 réponse

Gglebgdu78 Messages postés 3 Date d'inscription vendredi 30 octobre 2020 Statut Membre Dernière intervention 4 mai 2022 3
4 mai 2022 à 22:08
Désolé voici la partie qui manquait,
my bad



isGrounded = true;
}
}

void OnCollisionExit2D(Collision2D col)
{
if(col.gameObject.CompareTag("Ground"))
{
isGrounded = false;
}
}
void MovePlayer (float _horizontalMovement)
{
Vector3 targetVelocity = new Vector2(_horizontalMovement, rb.velocity.y);
rb.velocity = Vector3.SmoothDamp(rb.velocity, targetVelocity, ref velocity, .05f);

}
}
0

Discussions similaires