Rigidbody.SweepTest
Declaration
public bool SweepTest(Vector3 direction, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
| Параметр | Описание |
|---|---|
| направление | Направление, в котором должен перемещаться жесткий кузов. |
| hitInfo | Если вернётся true, то hitInfo будет содержать больше информации о том, где коллайдер ударился (Дополнительные ресурсы: RaycastHit). |
| maxDistance | Длина развертки. |
| queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Возвращаемое значение
логическое True, если сканирование rigidbody пересекает любой коллайдер, в противном случае false.
Описание
Тестирует, столкнется ли rigidbody с чем-либо, если его переместить через Scene.
Проверка того, столкнется ли жесткое тело с чем-либо, если оно будет перемещено через Scene. Это похоже на то, чтобы делать Physics.Raycast для всех точек, содержащихся в любом из Rigidbodyколлайдеров и возвращает ближайший из всех сообщенных попаданий (если таковые имеются). Это полезно для AI код, скажем, если вам нужно знать, что объект будет вписываться в пробел без столкновения с чем-либо.
Обратите внимание, что эта функция работает только в том случае, если к объекту rigidbody прикреплен примитивный коллайдер (сфера, куб или капсула) или выпуклая сетка — коллайдеры с вогнутой сеткой не будут работать, хотя они могут быть обнаружены в Scene по развеянию.
Дополнительные ресурсы: Physics.SphereCast, Physics.CapsuleCast, Rigidbody.SweepTestAll.
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public float collisionCheckDistance; public bool aboutToCollide; public float distanceToCollision; public Rigidbody rb;
void Start() { rb = GetComponent<Rigidbody>(); }
void Update() { RaycastHit hit; if (rb.SweepTest(transform.forward, out hit, collisionCheckDistance)) { aboutToCollide = true; distanceToCollision = hit.distance; } } }