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

Physics.BoxCast

Declaration

public static bool BoxCast(Vector3 center, Vector3 halfExtents, Vector3 direction, Quaternion orientation = Quaternion.identity, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Параметры

Параметр Описание
центр Центр коробки.
halfExtents Половина размера коробки в каждом измерении.
направление Направление, в котором должен быть брошен ящик.
ориентация Вращение коробки.
maxDistance Максимальная длина отлива.
layerMask Маска слоя Маска слоя, которая используется для выборочной фильтрации коллайдеров, которые рассматриваются при создании коробки.
queryTriggerInteraction Указывает, должен ли этот запрос вызывать триггеры.

Возвращаемое значение

логическое True, если были найдены пересечения.

Описание

Бросает коробку вдоль луча и возвращает подробную информацию о том, что попало.

Declaration

public static bool BoxCast(Vector3 center, Vector3 halfExtents, Vector3 direction, out RaycastHit hitInfo, Quaternion orientation = Quaternion.identity, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Параметры

Параметр Описание
центр Центр коробки.
halfExtents Половина размера коробки в каждом измерении.
направление Направление, в котором должен быть брошен ящик.
hitInfo Если вернётся true, hitInfo будет содержать больше информации о месте удара коллайдера. (Дополнительные ресурсы: RaycastHit).
ориентация Вращение коробки.
maxDistance Максимальная длина отлива.
layerMask Маска слоя Маска слоя, которая используется для выборочной фильтрации коллайдеров, которые рассматриваются при создании коробки.
queryTriggerInteraction Указывает, должен ли этот запрос вызывать триггеры.

Возвращаемое значение

логическое True, если были найдены пересечения.

Описание

Бросает коробку вдоль луча и возвращает подробную информацию о том, что попало.

//Attach this script to a GameObject. Make sure it has a Collider component by clicking the Add Component button. Then click Physics>Box Collider to attach a Box Collider component.
//This script creates a BoxCast in front of the GameObject and outputs a message if another Collider is hit with the Collider’s name.
//It also draws where the ray and BoxCast extends to. Just press the Gizmos button to see it in Play Mode.
//Make sure to have another GameObject with a Collider component for the BoxCast to collide with.

using UnityEngine;

[RequireComponent(typeof(Collider))] public class Example : MonoBehaviour { [SerializeField] private float maxDistance = 300f; [SerializeField] private Vector3 boxSizeMultiplier = Vector3.one * 0.5f;

private Collider col; private RaycastHit hit; private bool hitDetected; void Awake() { col = GetComponent<Collider>(); } void FixedUpdate() { Vector3 halfExtents = Vector3.Scale(transform.localScale, boxSizeMultiplier); Vector3 origin = col.bounds.center; Vector3 direction = transform.forward; //Test to see if there is a hit using a BoxCast //Calculate using the center of the GameObject's Collider(could also just use the GameObject's position), half the GameObject's size, the direction, the GameObject's rotation, and the maximum distance as variables. //Also fetch the hit data hitDetected = Physics.BoxCast( origin, halfExtents, direction, out hit, transform.rotation, maxDistance); if (hitDetected) { //Output the name of the Collider your Box hit Debug.Log("Hit : " + hit.collider.name); } }

//Draw the BoxCast as a gizmo to show where it currently is testing. Click the Gizmos button to see this void OnDrawGizmos() { Gizmos.color = Color.red; if (hitDetected) { //Draw a Ray forward from GameObject toward the hit Gizmos.DrawRay(transform.position, transform.forward * hit.distance); //Draw a cube that extends to where the hit exists Gizmos.DrawWireCube(transform.position + transform.forward * hit.distance, transform.localScale); } else { //Draw a Ray forward from GameObject toward the maximum distance Gizmos.DrawRay(transform.position, transform.forward * maxDistance); //Draw a cube at the maximum distance Gizmos.DrawWireCube(transform.position + transform.forward * maxDistance, transform.localScale); } } }