Version: 2022.1
언어: 한국어
레이어
Unity에서 기능 레이어 생성

Unity에서 레이어 사용

레이어를 사용하여 프로젝트와 워크플로를 최적화할 수 있습니다. 레이어의 일반적인 용도에는 다음 사항이 포함됩니다. * 레이어 기반 렌더링 * 레이어 기반 충돌

레이어로 카메라 컬링 마스크 사용

카메라의 컬링 마스크 를 사용하는 경우 특정 레이어나 레이어 선택의 오브젝트만 렌더링할 수 있습니다. 컬링 마스크를 변경하려면 사용할 카메라를 선택하고 인스펙터 창에서 Culling Mask 드롭다운을 선택합니다. 레이어의 체크박스를 지우면 씬에서 렌더링되지 않습니다.

참고: UI 요소와 스크린 공간 캔버스 자식은 위의 사항에 예외이며 상관없이 렌더링됩니다.

레이어가 있는 레이캐스트

You can use layers to specify which GameObjects that a ray cast can intersect with. To make a ray cast ignore a GameObject, you can assign it to the Ignore Raycast layer, or pass a LayerMask to the ray cast API call.

레이어마스크를 레이캐스트 API 호출에 전달하지 않으면 Unity는 Ignore Raycast를 제외한 모든 레이어와 일치하는 Physics.DefaultRaycastLayers를 사용합니다.

Physics.Raycast 함수는 비트마스크를 사용하고 각 비트는 레이의 레이어 무시 여부를 결정합니다. 레이어마스크의 모든 비트가 켜져 있으면 레이는 모든 콜라이더에 충돌합니다. 레이어마스크가 = 0이면 어떤 것도 레이와 충돌하지 않습니다.

예를 들어 레이어 8에 레이를 캐스트하려면 아래의 코드 샘플을 참조하십시오.

int layerMask = 1 << 8;

// Does the ray intersect any objects which are in layer 8?
if (Physics.Raycast(transform.position, Vector3.forward, Mathf.Infinity, layerMask))
{
    Debug.Log("The ray hit the player");

그런 다음 반대로 수행하면 레이가 레이어 8을 제외한 모든 레이어와 충돌합니다.

void Update ()
{
    // Bit shift the index of the layer (8) to get a bit mask
    int layerMask = 1 << 8;

    // This casts rays only against colliders in layer 8.
    // But to collide against everything except layer 8, use the ~ operator because it inverts a bitmask.
    layerMask = ~layerMask;

    RaycastHit hit;
    // Does the ray intersect any objects excluding layer 8.
    if (Physics.Raycast(transform.position, transform.TransformDirection (Vector3.forward), out hit, Mathf.Infinity, layerMask))
    {
        Debug.DrawRay(transform.position, transform.TransformDirection (Vector3.forward) * hit.distance, Color.yellow);
        Debug.Log("Did Hit");
    }
    else
    {
        Debug.DrawRay(transform.position, transform.TransformDirection (Vector3.forward) *1000, Color.white);
        Debug.Log("Did not Hit");
    }
}

참고: 레이어마스크를 Raycast 함수에 전달하지 않으면 IgnoreRaycast 레이어를 사용하는 콜라이더가 그대로 무시됩니다.

레이어
Unity에서 기능 레이어 생성
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961