Recherche…


Utilisation de la couche

Les calques Unity sont similaires aux balises car ils peuvent être utilisés pour définir des objets devant interagir ou se comporter d'une certaine manière. Cependant, les calques sont principalement utilisés avec des fonctions de la classe Physics : Unity Documentation - Physics

Les calques sont représentés par un entier et peuvent être transmis aux fonctions de cette manière:

using UnityEngine;
class LayerExample {

    public int layer;

    void Start()
    {
        Collider[] colliders = Physics.OverlapSphere(transform.position, 5f, layer);
    }
}

L'utilisation d'un calque de cette manière n'inclut que les Colliders dont les GameObjects ont le calque spécifié dans les calculs effectués. Cela simplifie la logique et améliore les performances.

Structure du masque de calque

La structure LayerMask est une interface qui fonctionne presque exactement comme si on passait un entier à la fonction en question. Cependant, son plus grand avantage est de permettre à l'utilisateur de sélectionner la couche en question dans un menu déroulant de l'inspecteur.

using UnityEngine;
class LayerMaskExample{

    public LayerMask mask;
    public Vector3 direction;

    void Start()
    {
        if(Physics.Raycast(transform.position, direction, 35f, mask))
        {
            Debug.Log("Raycast hit");
        }
    {
}

Il possède également plusieurs fonctions statiques permettant de convertir les noms de couches en index ou index en noms de couche.

using UnityEngine;
class NameToLayerExample{

    void Start()
    {
        int layerindex = LayerMask.NameToLayer("Obstacle");
    {
}

Pour faciliter la vérification de la couche, définissez la méthode d’extension suivante.

public static bool IsInLayerMask(this GameObject @object, LayerMask layerMask)
{
    bool result = (1 << @object.layer & layerMask) == 0;

    return result;
}

Cette méthode vous permettra de vérifier si un objet de jeu se trouve dans un masque (sélectionné dans l'éditeur) ou non.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow