En ce moment je débute sur Unity2D et je suis en train de crée mon premier perso.
Je rencontre un problème pour faire sauter mon perso, en gros pour détecter le contact du perso avec sol j'utilise "OverlapArea". Je met un extrait du code (je met pas tout le code, que ce qui est en rapport avec le groundCheck) :
Code : Tout sélectionner
using System.Collections;
using UnityEngine;
public class Player_Controller : MonoBehaviour
{
Rigidbody2D rigBody;
public float jumpForce = 600f;
public LayerMask Ground;
public bool isGrounded;
private void Start()
{
rigBody = GetComponent<Rigidbody2D>();
}
public void Update()
{
isGrounded = Physics2D.OverlapArea(new Vector2(transform.position.x - 1.25f, transform.position.y - 2.5f), new
Vector2(transform.position.x + 1.25f, transform.position.y - 3f), Ground);
if ((isGrounded) && (Input.GetKeyDown(KeyCode.UpArrow)))
{
rigBody.AddForce(new Vector2(0, jumpForce));
}
}
}
J'ai bien appliqué le LayerMask "Ground" sur mon sol, et j'ai aussi dis au joueur de reconnaitre le Layermask "Ground".
Le truc c'est que la variable "isGrounded" reste toujours en false même quand je suis en contact avec le sol.
J'ai beau faire pleins de tests, je vois pas pourquoi cette variable reste en false, ducoup je me demande si c'est possible d'avoir votre avis la dessus .