BoxCast
Casts the box along a ray and returns detailed information on what was hit.
Read time 3 minutesLast updated 5 days ago
Definition
- Type: Method
- Namespace: UnityEngine
- Assembly: UnityEngine.PhysicsModule
BoxCast(Vector3, Vector3, Vector3, Quaternion, float, int, QueryTriggerInteraction)
Casts the box along a ray and returns detailed information on what was hit.
public static bool BoxCast(Vector3 center, Vector3 halfExtents, Vector3 direction, Quaternion orientation, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction)
Parameters
Center of the box.
Half the size of the box in each dimension.
The direction in which to cast the box.
Rotation of the box.
The max length of the cast.
A Layer mask that is used to selectively filter which colliders are considered when casting a box.
Specifies whether this query should hit Triggers.
Returns
Type | Description |
|---|---|
| bool | True, if any intersections were found. |
BoxCast(Vector3, Vector3, Vector3, RaycastHit, Quaternion, float, int, QueryTriggerInteraction)
Casts the box along a ray and returns detailed information on what was hit.
public static bool BoxCast(Vector3 center, Vector3 halfExtents, Vector3 direction, out RaycastHit hitInfo, Quaternion orientation, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction)
Parameters
Center of the box.
Half the size of the box in each dimension.
The direction in which to cast the box.
If true is returned, will contain more information about where the collider was hit. (Additional Resources: RaycastHit).
hitInfoRotation of the box.
The max length of the cast.
A Layer mask that is used to selectively filter which colliders are considered when casting a box.
Specifies whether this query should hit Triggers.
Returns
Type | Description |
|---|---|
| bool | True, if any intersections were found. |
Examples
//Attach this script to a GameObject. Make sure it has a Collider component by clicking the <b>Add Component</b> button. Then click <b>Physics</b>><b>Box Collider</b> 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); } }}