Version: 2017.3
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);

Parámetros

center Centro de la caja.
halfExtents La mitad del tamaño de la caja en cada dimensión.
direction La dirección en la que se emite la caja.
orientation Rotación de la caja.
maxDistance La longitud máxima de la emisión.
layerMask Una Layer mask que es utilizada para ignorar colliders selectivamente cuando se emita una cápsula.
queryTriggerInteraction Especifica si esta consulta debería golpear Triggers.

Valor de retorno

bool True, si alguna intersección fue encontrada.

Descripción

Emite la caja a lo largo de un rayo y retorna información detallada sobre qué fue golpeado.


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

Parámetros

center Centro de la caja.
halfExtents La mitad del tamaño de la caja en cada dimensión.
direction La dirección en la que se emite la caja.
hitInfo If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit).
orientation Rotación de la caja.
maxDistance La longitud máxima de la emisión.
layerMask Una Layer mask que es utilizada para ignorar colliders selectivamente cuando se emita una cápsula.
queryTriggerInteraction Especifica si esta consulta debería golpear Triggers.

Valor de retorno

bool True, si alguna intersección fue encontrada.

Descripción

Emite la caja a lo largo de un rayo y retorna información detallada sobre qué fue golpeado.

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

public class Example : MonoBehaviour { float m_MaxDistance; float m_Speed; bool m_HitDetect;

Collider m_Collider; RaycastHit m_Hit;

void Start() { //Choose the distance the Box can reach to m_MaxDistance = 300.0f; m_Speed = 20.0f; m_Collider = GetComponent<Collider>(); }

void Update() { //Simple movement in x and z axes float xAxis = Input.GetAxis("Horizontal") * m_Speed; float zAxis = Input.GetAxis("Vertical") * m_Speed; transform.Translate(new Vector3(xAxis, 0, zAxis)); }

void FixedUpdate() { //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 m_HitDetect = Physics.BoxCast(m_Collider.bounds.center, transform.localScale, transform.forward, out m_Hit, transform.rotation, m_MaxDistance); if (m_HitDetect) { //Output the name of the Collider your Box hit Debug.Log("Hit : " + m_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;

//Check if there has been a hit yet if (m_HitDetect) { //Draw a Ray forward from GameObject toward the hit Gizmos.DrawRay(transform.position, transform.forward * m_Hit.distance); //Draw a cube that extends to where the hit exists Gizmos.DrawWireCube(transform.position + transform.forward * m_Hit.distance, transform.localScale); } //If there hasn't been a hit yet, draw the ray at the maximum distance else { //Draw a Ray forward from GameObject toward the maximum distance Gizmos.DrawRay(transform.position, transform.forward * m_MaxDistance); //Draw a cube at the maximum distance Gizmos.DrawWireCube(transform.position + transform.forward * m_MaxDistance, transform.localScale); } } }