J'ai un personnage dans Unity que j'utilise un raycast pour le faire sauter. Mais même quand la raycast ne frappe pas le sol (je peux voir le rayon avec la sortie de débogage), le joueur peut toujours sauter. Des idées pour lesquelles le rayon pense toujours qu'il entre en collision? Est-ce que le rayon pourrait frapper mon collisionneur de caractères, l'amenant à être vrai? J'ai été la recherche en ligne pendant des heures et rien que je trouve est en train de corriger la situation. Voici mon code:Unity Raycast retourne toujours vrai
void FixedUpdate()
{
Ray ray = new Ray();
RaycastHit hit;
ray.origin = transform.position;
ray.direction = Vector3.down;
bool output = Physics.Raycast(ray, out hit);
Debug.DrawRay(ray.origin, ray.direction, Color.red);
if (Input.GetKey(KeyCode.Space) && output)
{
r.AddForce(Vector3.up * 1f, ForceMode.VelocityChange);
}
}
Avez-vous essayé de déplacer le 'ray.origin' à l'extérieur de votre collisionneur de personnage? – Kolichikov
Oui, donc quand je mets le rayon inférieur (en dessous du caractère et du sol) il n'y a pas de saut, ce qui est logique. Mais je l'ai juste mis en dessous du personnage (toujours au-dessus du sol, aussi près que possible des pieds de personnages), il ne détecte jamais le sol et permet de sauter – SJR59
aussi quand je mets le rayon au-dessus de mon personnage , il permet toujours de sauter ... – SJR59