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

Physics.CapsuleCast

Объявление

public static bool CapsuleCast(Vector3 point1, Vector3 point2, float radius, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Параметры

point1 Центр сферы в start капсулы.
point2 Центр сферы на end капсулы.
radius Радиус капсулы.
direction Направление, в котором следует перемещать капсулу.
maxDistance Максимальная длина развертки.
layerMask Маска слоя, которая используется для выборочного игнорирования коллайдеров при использовании капсулы.
queryTriggerInteraction Указывает, должен ли этот запрос вызывать триггеры..

Возвращает

bool true, когда развертка капсулы пересекает какой-либо коллайдер, в противном случае — false.

Описание

Выбрасывает капсулу на все коллайдеры в сцене и возвращает подробную информацию о том, что было поражено.

Капсула определяется двумя сферами с radius вокруг point1 и point2, которые образуют два конца капсулы. Попадания возвращаются для первого коллайдера, который столкнулся бы с этой капсулой, если бы капсула была перемещена в direction. Это полезно, когда Raycast не дает достаточной точности, потому что вы хотите узнать, сможет ли объект определенного размера, например персонаж, двигаться куда-то, не сталкиваясь ни с чем на пути.

Примечания. CapsuleCast не будет обнаруживать коллайдеры, для которых капсула перекрывает коллайдер. Передача нулевого радиуса приводит к неопределенным результатам и не всегда ведет себя так же, как Physics.Raycast.

Смотрите так же: Physics.SphereCast, Physics.CapsuleCastAll, Physics.Raycast, Rigidbody.SweepTest.

using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { RaycastHit hit; CharacterController charContr = GetComponent<CharacterController>(); Vector3 p1 = transform.position + charContr.center + Vector3.up * -charContr.height * 0.5F; Vector3 p2 = p1 + Vector3.up * charContr.height; float distanceToObstacle = 0; // Бросаем фигуру контроллера персонажа на 10 метров вперед, чтобы увидеть, не заденет ли она что-нибудь. if (Physics.CapsuleCast(p1, p2, charContr.radius, transform.forward, out hit, 10)) distanceToObstacle = hit.distance; } }

Объявление

public static bool CapsuleCast(Vector3 point1, Vector3 point2, float radius, Vector3 direction, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Параметры

point1 Центр сферы в start капсулы.
point2 Центр сферы на end капсулы.
radius Радиус капсулы.
direction Направление, в котором следует перемещать капсулу.
maxDistance Максимальная длина развертки.
hitInfo Если возвращено значение true, hitInfo будет содержать дополнительную информацию о том, где произошло столкновение с коллайдером. (Смотрите так же: RaycastHit).
layerMask Маска слоя, которая используется для выборочного игнорирования коллайдеров при использовании капсулы.
queryTriggerInteraction Указывает, должен ли этот запрос вызывать триггеры.
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3