J'ai une fonction booléenne DirectPath simple qui est destinée à renvoyer vrai ou faux selon qu'il y a un mur entre 2 points.Utilisation de layerMasks avec Physic2D.Linecast() dans Unity C#
public bool DirectPath (Vector2 start, Vector2 end) {
RaycastHit2D hitWall = Physics2D.Linecast (start, end, 8);
if (hitWall == null) {
Debug.Log ("Direct path returning true");
return true;
} else {
Debug.Log ("Direct path returning false");
return false;
}
}
J'ai mis la layerMask pour tous les collisionneurs de mur dans le jeu de « mur » qui est le numéro 8 dans ma liste de couche. Mais la fonction renvoie false à chaque fois, ce qui signifie qu'un collisionneur mural est frappé à chaque fois. Le point de départ ne se trouve même pas à l'intérieur d'un collisionneur, il ne peut donc pas être atteint par son propre collisionneur. Mais je veux utiliser cette même fonction pour déterminer la ligne de vue du joueur, ce qui impliquera un collisionneur.
@AlfieGoodacre Il est 0 base, mais j'ai essayé 7 et est toujours fausse retournais chaque fois. J'ai essayé de voir ce que le hitwall.collider.gameObject.name est mais il ne retourne rien. Est-ce la bonne façon de vérifier ce qu'il frappe réellement? –