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

Physics.CapsuleCastAll

Объявление

public static RaycastHit[] CapsuleCastAll(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 Указывает, должен ли этот запрос вызывать триггеры..

Возвращает

RaycastHit[] Массив всех коллайдеров попал в развертку.

Описание

То же, что и Physics.CapsuleCast, но эта функция возвращает все совпадения, которые пересекает развертка капсулы.

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

Примечания. Для коллайдеров, перекрывающих капсулу в начале развертки, RaycastHit.normal устанавливается напротив направления развертки, RaycastHit.distance устанавливается равным нулю, и нулевой вектор возвращается в RaycastHit.point. Возможно, вы захотите проверить, так ли это в вашем конкретном запросе, и выполнить дополнительные запросы для уточнения результата. Передача нулевого радиуса приводит к неопределенным результатам и не всегда ведет себя так же, как Physics.Raycast.

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

using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { RaycastHit[] hits; CharacterController charCtrl = GetComponent<CharacterController>(); Vector3 p1 = transform.position + charCtrl.center + Vector3.up * -charCtrl.height * 0.5F; Vector3 p2 = p1 + Vector3.up * charCtrl.height; // Бросьте фигуру контроллера персонажа на 10 метров вперед, чтобы увидеть, не ударит ли он что-нибудь hits = Physics.CapsuleCastAll(p1, p2, charCtrl.radius, transform.forward, 10); // Изменить материал всех ударных коллайдеров // чтобы использовать прозрачный шейдер for (int i = 0; i < hits.Length; i++) { RaycastHit hit = hits[i]; Renderer rend = hit.transform.GetComponent<Renderer>(); if (rend) { rend.material.shader = Shader.Find("Transparent/Diffuse"); Color tempColor = rend.material.color; tempColor.a = 0.3F; rend.material.color = tempColor; } } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3