Unity 6.3
0 онлайн 67 гостей 3 в системе
Вход

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; } } }