Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

LayerMask

структура в UnityEngine / Реализовано в: UnityEngine.CoreModule

Описание

Указывает слои для использования в Physics.Raycast.

GameObject может использовать до 32 LayerMask, поддерживаемых редактором. Первые 8 из этих Layers определяются Unity; следующие 24 контролируются пользователем.

Битовые маски представляют 32 слоя и определяют их как true или false. Каждая битовая маска описывает, используется ли Layer. Например, для бита 5 можно установить значение 1 (true). Это позволит использовать встроенную настройку Water.

Параметр Edit->Settings->Tags and Layers показывает использование 32-битных масок. Каждый Layer отображается со строковым параметром. Например, Встроенный Layer 0 установлен как Default; Встроенный Layer 0 установлен как TransparentFX. Новые именованные Layer добавляются над слоем битовой маски 8. Выбранный GameObject будет отображать выбранный Layer в правом верхнем углу Инспектора. В приведенном ниже примере для User Layer 13 установлено значение "Wall". Это приводит к тому, что назначенный GameObject рассматривается как часть здания.

В следующем примере сценария Physics.Raycast отправляет в мир луч. Camera.main можно вращать вокруг оси Y и запускать луч. Три GameObject представляют собой стены, в которые может попасть выпущенный луч. Каждый GameObject имеет GameObject.label значение "Wall" layerMask.

using UnityEngine;

// Fire a gun at 3 walls in the scene. // // The Raycast will be aimed in the range of -45 to 45 degrees. If the Ray hits any of the // walls true will be returned . The three walls all have a Wall Layer attached. The left // and right keys, and the space key, are all used to aim and fire. // // Quad floor based at (0, -0.5, 0), rotated in x by 90 degrees, scale (8, 8, 8). // ZCube wall at (0, 0.5, 6), scale (3, 2, 0.5). // LCube wall at (-3, 0, 3), scale (0.5, 1, 4). // RCube wall at (3, 1.5, 3), scale (1, 4, 4).

public class ExampleScript : MonoBehaviour { private float cameraRotation;

void Start() { Camera.main.transform.position = new Vector3(0, 0.5f, 0); cameraRotation = 0.0f; }

// Rotate the camera based on what the user wants to look at. // Avoid rotating more than +/-45 degrees. void Update() { if (Input.GetKey("left")) { cameraRotation -= 1f; if (cameraRotation < -45.0f) { cameraRotation = -45.0f; } }

if (Input.GetKey("right")) { cameraRotation += 1f; if (cameraRotation > 45.0f) { cameraRotation = 45.0f; } }

// Rotate the camera Camera.main.transform.localEulerAngles = new Vector3(0.0f, cameraRotation, 0.0f); }

void FixedUpdate() { Transform transform = Camera.main.transform;

if (Input.GetKeyUp("space")) { // Check for a Wall. LayerMask mask = LayerMask.GetMask("Wall");

// Check if a Wall is hit. if (Physics.Raycast(transform.position, transform.forward, 20.0f, mask)) { Debug.Log("Fired and hit a wall"); } } } }

Примечание.LayerMask — это битовая маска. Используйте LayerMask.GetMask и LayerMask.LayerToName. для создания битовой маски.

Свойства

value Преобразует значение маски слоя в целочисленное значение.

Статические Методы

GetMask Учитывая набор имен слоев, определенных либо встроенным, либо пользовательским слоем в диспетчере тегов и слоев, возвращает эквивалентную маску слоя для всех из них.
LayerToName Учитывая номер слоя, возвращает имя слоя, как определено либо во встроенном, либо в пользовательском слое в диспетчере тегов и слоев..
NameToLayer Учитывая имя слоя, возвращает индекс слоя, определенный либо встроенным, либо пользовательским слоем в диспетчере тегов и слоев..

Операторы

LayerMask Неявно преобразует целое число в LayerMask.
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3