Объявление
public static bool SphereCast(Vector3 origin, float radius, Vector3 direction, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
origin | Центр сферы в начале развертки. |
radius | Радиус сферы. |
direction | Направление, в котором перемещать сферу. |
hitInfo | Если возвращено значение true, hitInfo будет содержать дополнительную информацию о том, где произошло столкновение с коллайдером. (Смотрите так же: RaycastHit). |
maxDistance | Максимальная длина заброса. |
layerMask | Маска слоя, которая используется для выборочного игнорирования коллайдеров при использовании капсулы. |
queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Возвращает
bool true, когда развертка сферы пересекает любой коллайдер, в противном случае — false.
Описание
Отбрасывает сферу по лучу и возвращает подробную информацию о том, что произошло.
Это полезно, когда Raycast не дает достаточной точности, потому что вы хотите узнать, сможет ли объект определенного размера, например персонаж, двигаться куда-то, не сталкиваясь с чем-либо на пути. Думайте о сфере как о толстом луче. В этом случае луч определяется начальным вектором и направлением.
Примечания. 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;
}
}
}
Объявление
public static bool SphereCast(Ray ray, float radius, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
ray | Начальная точка и направление луча, на который направлена сферическая развертка. |
radius | Радиус сферы. |
maxDistance | Максимальная длина заброса. |
layerMask | Маска слоя, которая используется для выборочного игнорирования коллайдеров при использовании капсулы. |
queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Возвращает
bool true, когда развертка сферы пересекает любой коллайдер, в противном случае — false.
Описание
Отбрасывает сферу по лучу и возвращает подробную информацию о том, что произошло.
Это полезно, когда Raycast не дает достаточной точности, потому что вы хотите узнать, сможет ли объект определенного размера, например персонаж, двигаться куда-то, не сталкиваясь с чем-либо на пути. Думайте о сфере как о толстом луче.
Смотрите так же: Physics.SphereCastAll, Physics.CapsuleCast, Physics.Raycast, Rigidbody.SweepTest.
Объявление
public static bool SphereCast(Ray ray, float radius, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
ray | Начальная точка и направление луча, в который бросается развертка сферы.. |
radius | Радиус сферы. |
hitInfo | Если возвращено значение true, hitInfo будет содержать дополнительную информацию о том, где произошло столкновение с коллайдером. (Смотрите так же: RaycastHit). |
maxDistance | Максимальная длина заброса. |
layerMask | Маска слоя, используемая для выборочного игнорирования коллайдеров при использовании капсулы.. |
queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |