Problème saut Unity, variable isGrounded
Gglebgdu78
Messages postés
4
Statut
Membre
-
Gglebgdu78 Messages postés 4 Statut Membre -
Gglebgdu78 Messages postés 4 Statut Membre -
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
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Problème numérotation page word saut de section ✓ - Forum Word
- Saut de ligne chatgpt - Forum Réseaux sociaux
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);
}
}