Physics.SphereCast
Declaration
public static bool SphereCast(Vector3 origin, float radius, Vector3 direction, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
| Параметр | Описание |
|---|---|
| происхождение | Центр сферы в начале развертки. |
| радиус | Радиус сферы. |
| направление | Направление, в котором должен быть развернут шар. |
| hitInfo | Если вернётся true, hitInfo будет содержать больше информации о месте удара коллайдера. (Дополнительные ресурсы: RaycastHit). |
| maxDistance | Максимальная длина отлива. |
| layerMask | Маска слоя Маска слоя, которая используется для выборочного фильтрования коллайдеров, которые рассматриваются при формировании сферы. |
| queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Возвращаемое значение
логическое True, если сфера пересекает любой коллайдер, в противном случае false.
Описание
Бросает сферу вдоль луча и возвращает подробную информацию о том, что было поражено.
Это полезно, когда Raycast не дает достаточной точности, потому что вы хотите узнать, сможет ли объект определенного размера, например, персонаж, двигаться куда-то без столкновения с чем-либо на пути. Представьте себе сферу, созданную как толстый raycast. В этом случае луч определяется начальным вектором и направлением.
Примечания: SphereCast не будет обнаруживать коллайдеры, для которых сфера перекрывает коллайдер. Проход нулевого радиуса приводит к неопределенному выходу и не всегда ведет себя так же, как Physics.Raycast.
Примечания: hit.normal от Physics.SphereCast не всегда представляет нормаль поверхности. Часто это направление от точки контакта до центра сферы. Это может ввести в заблуждение, если вы используете его для скольжения, отскока или выравнивания объектов. Рассмотрите возможность использования Physics.Raycast, если вам нужна истинная поверхностная нормаль.
Дополнительные ресурсы: Physics.SphereCastAll, Physics.CapsuleCast, Physics.Raycast, Rigidbody.SweepTest.
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { CharacterController charCtrl;
void Start() { charCtrl = GetComponent<CharacterController>(); }
void Update() { RaycastHit hit;
Vector3 p1 = transform.position + charCtrl.center; float distanceToObstacle = 0;
// Cast a sphere wrapping character controller 10 meters forward // to see if it is about to hit anything. if (Physics.SphereCast(p1, charCtrl.height / 2, transform.forward, out hit, 10)) { distanceToObstacle = hit.distance; } } }
Declaration
public static bool SphereCast(Ray ray, float radius, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
| Параметр | Описание |
|---|---|
| луч | Начальная точка и направление луча, в котором проецируется сканирование сферы. |
| радиус | Радиус сферы. |
| maxDistance | Максимальная длина отлива. |
| layerMask | Маска слоя Маска слоя, которая используется для выборочного фильтрования коллайдеров, которые рассматриваются при формировании сферы. |
| queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Возвращаемое значение
логическое True, если сфера пересекает любой коллайдер, в противном случае false.
Описание
Бросает сферу вдоль луча и возвращает подробную информацию о том, что было поражено.
Это полезно, когда Raycast не дает достаточной точности, потому что вы хотите узнать, сможет ли объект определенного размера, например, персонаж, двигаться куда-то без столкновения с чем-либо на пути. Представьте себе сферу, как толстый raycast.
Дополнительные ресурсы: Physics.SphereCastAll, Physics.CapsuleCast, Physics.Raycast, Rigidbody.SweepTest.
Declaration
public static bool SphereCast(Ray ray, float radius, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
| Параметр | Описание |
|---|---|
| луч | Начальная точка и направление луча, в котором проецируется сканирование сферы. |
| радиус | Радиус сферы. |
| hitInfo | Если вернётся true, hitInfo будет содержать больше информации о месте удара коллайдера. (Дополнительные ресурсы: RaycastHit). |
| maxDistance | Максимальная длина отлива. |
| layerMask | Маска слоя Маска слоя, которая используется для выборочного фильтрования коллайдеров, которые рассматриваются при формировании сферы. |
| queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Описание