Buscar..


Uso de la capa

Las capas de Unity son similares a las etiquetas, ya que se pueden usar para definir objetos con los que se debe interactuar o se deben comportar de cierta manera; sin embargo, las capas se usan principalmente con funciones en la clase de Physics : Documentación de Unity - Física

Las capas están representadas por un entero y se pueden pasar a las funciones de esta manera:

using UnityEngine;
class LayerExample {

    public int layer;

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

El uso de una capa de esta manera incluirá solo Colisionadores cuyos GameObjects tengan la capa especificada en los cálculos realizados. Esto simplifica aún más la lógica y mejora el rendimiento.

Estructura LayerMask

La estructura LayerMask es una interfaz que funciona casi exactamente como pasar un entero a la función en cuestión. Sin embargo, su mayor beneficio es permitir al usuario seleccionar la capa en cuestión de un menú desplegable en el inspector.

using UnityEngine;
class LayerMaskExample{

    public LayerMask mask;
    public Vector3 direction;

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

También tiene múltiples funciones estáticas que permiten convertir nombres de capa en índices o índices en nombres de capa.

using UnityEngine;
class NameToLayerExample{

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

Para facilitar la comprobación de la capa, defina el siguiente método de extensión.

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

    return result;
}

Este método le permitirá verificar si un objeto de juego está en una tarea (seleccionada en el editor) o no.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow