Problème saut Unity, variable isGrounded
Gglebgdu78
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Gglebgdu78 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Gglebgdu78 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
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:
même avec des bases solides en C++ je ne comprend pas vraiment puisque le script est en C sharp.
Merci beaucoup
Cordialement
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
A voir également:
- Problème saut Unity, variable isGrounded
- Comment supprimer une page sur word avec un saut de page ? - Guide
- Saut de colonne word - Guide
- Problème numérotation page word saut de section ✓ - Forum Word
- Saut de ligne html sans <br ✓ - Forum Webmastering
- Vba range avec variable ✓ - Forum VB / VBA
1 réponse
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);
}
}
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);
}
}