Version: Unity 6.0 (6000.0)
言語 : 日本語
レイヤー
Unity での機能的レイヤーの作成

Unity でのレイヤーの使用

レイヤーを使用して、プロジェクトとワークフローを最適化できます。レイヤーの一般的な使用例は以下のとおりです。

  • レイヤーベースのレンダリング
  • レイヤーベースの衝突

レイヤーでカメラのカリングマスクを使用する

カメラのカリングマスクを使用する場合は、特定のレイヤーまたは選択したレイヤーのオブジェクトのみを描画することができます。カリングマスクを変更するには、使用するカメラを選択し、Inspector ウィンドウで Culling Mask ドロップダウンを選択します。レイヤーのチェックボックスのチェックマークを消去すると、シーンに描画されません。

ノート: UI 要素とスクリーンスペースキャンバスの子はこれの例外であり、関係なく描画されます。

レイヤーを使用したレイキャスト

レイヤーを使用して、レイキャストが交差可能なゲームオブジェクトを指定できます。レイキャストでゲームオブジェクトを無視するには、Ignore Raycast レイヤーに割り当てるか、LayerMask をレイキャスト API 呼び出しに渡します。

レイキャスト API 呼び出しに LayerMask を渡さない場合、Unity は Ignore Raycast を除くすべてのレイヤーに一致する Physics.DefaultRaycastLayers を使用します。

Physics.Raycast 関数はビットマスクを使用して、各ビットでレイがレイヤーを無視するかどうかを決定します。layerMask のすべてのビットが有効である場合は、レイがすべてのコライダーと衝突します。layerMask = 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 関数に layerMask を渡さない場合、IgnoreRaycast レイヤーを使用するコライダーを引き続き無視します。

レイヤー
Unity での機能的レイヤーの作成