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