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

Объявление

public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);

Параметры

origin Точка в 2D-пространстве, где начинается луч.
direction Вектор, представляющий направление луча.
distance Максимальное расстояние, на которое может быть направлен луч.
layerMask Фильтр для обнаружения коллайдеров только на определенных слоях.
minDepth Включает только объекты с координатой Z (глубиной) больше или равной этому значению.
maxDepth Включает только объекты с координатой Z (глубиной) меньше или равной этому значению.

Возвращает

RaycastHit2D Результаты броска возвращены

Описание

Направляет луч на коллайдеры в сцене.

Raycast концептуально похож на лазерный луч, испускаемый из точки в пространстве в определенном направлении. Любой объект, соприкасающийся с лучом, может быть обнаружен и сообщен.

Эта функция возвращает объект RaycastHit со ссылкой на коллайдер, в который попал луч (свойство результата коллайдера будет равно NULL, если ничего не попало). layerMask можно использовать для выборочного обнаружения объектов только на определенных слоях (например, это позволяет применять обнаружение только к вражеским персонажам).

Перегрузки этого метода, использующие contactFilter, могут фильтровать результаты с помощью параметров, доступных в ContactFilter2D.

Рейкасты полезны для определения линии прямой видимости, целей, пораженных огнестрельным оружием, и для многих других целей в игровом процессе.

Кроме того, это также обнаружит коллайдер(ы) в начале луча. В этом случае луч начинается внутри коллайдера и не пересекает поверхность коллайдера. Это означает, что нормаль столкновения не может быть вычислена, и в этом случае возвращаемая нормаль столкновения устанавливается на обратную проверяемому вектору луча. Это легко обнаружить, поскольку такие результаты всегда имеют долю RaycastHit2D, равную нулю.

Смотрите так же: LayerMask class, RaycastHit2D class, RaycastAll, Linecast, DefaultRaycastLayers, IgnoreRaycastLayer, raycastsHitTriggers.

using UnityEngine; public class Example : MonoBehaviour { // Float a rigidbody object a set distance above a surface. public float floatHeight; // Desired floating height. public float liftForce; // Force to apply when lifting the rigidbody. public float damping; // Force reduction proportional to speed (reduces bouncing). Rigidbody2D rb2D; void Start() { rb2D = GetComponent<Rigidbody2D>(); } void FixedUpdate() { // Cast a ray straight down. RaycastHit2D hit = Physics2D.Raycast(transform.position, -Vector2.up); // If it hits something... if (hit.collider != null) { // Calculate the distance from the surface and the "error" relative // to the floating height. float distance = Mathf.Abs(hit.point.y - transform.position.y); float heightError = floatHeight - distance; // The force is proportional to the height error, but we remove a part of it // according to the object's speed. float force = liftForce * heightError - rb2D.velocity.y * damping; // Apply the force to the rigidbody. rb2D.AddForce(Vector3.up * force); } } }

Объявление

public static int Raycast(Vector2 origin, Vector2 direction, ContactFilter2D contactFilter, RaycastHit2D[] results, float distance = Mathf.Infinity);

Параметры

origin Точка в 2D-пространстве, откуда исходит луч.
direction Вектор, представляющий направление луча.
contactFilter Контактный фильтр, используемый для различной фильтрации результатов, например, по маске слоя, глубине Z или нормальному углу.
results Массив для получения результатов. Размер массива определяет максимальное количество результатов, которые могут быть возвращены.
distance Максимальное расстояние, на которое может быть направлен луч.

Возвращает

intВозвращает количество результатов, помещенных в массив results.

Описание

Направляет луч на коллайдеры в сцене.

Raycast концептуально похож на лазерный луч, испускаемый из точки в пространстве в определенном направлении. Любой объект, вступивший в контакт с лучом, может быть обнаружен и отправлен в отчет.

Эта функция возвращает количество найденных контактов и помещает эти контакты в массив results. Результаты также можно отфильтровать с помощью contactFilter.

Смотрите так же: ContactFilter2D and RaycastHit2D.


Объявление

public static int Raycast(Vector2 origin, Vector2 direction, ContactFilter2D contactFilter, List results, float distance = Mathf.Infinity);

Параметры

origin Tточка в 2D пространстве, откуда исходит луч.
direction Вектор, представляющий направление луча.
contactFilter Контактный фильтр, используемый для различной фильтрации результатов, например, по маске слоя, глубине Z или нормальному углу.
results Список для получения результатов.
distance Максимальное расстояние, на которое можно бросить луч.

Возвращает

int Возвращает количество результатов, помещенных в список results.

Описание

Направляет луч на коллайдеры в сцене.

Raycast концептуально похож на лазерный луч, испускаемый из точки в пространстве в определенном направлении. Любой коллайдер, вступивший в контакт с лучом, может быть обнаружен и отправлен в отчет.

Целое возвращаемое значение — это количество результатов, записанных в список results. Список результатов будет изменен, если он не содержит достаточного количества элементов для отчета обо всех результатах. Это предотвращает выделение памяти для результатов, когда нет необходимости изменять размер списка results, и повышает производительность сборки мусора при частом выполнении запроса.

Результаты также можно отфильтровать с помощью contactFilter.

Смотрите так же: ContactFilter2D and RaycastHit2D.

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