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

パラメーター

centerボックスの中心
halfExtents各軸についてのボックスサイズの半分
directionボックスを投射する方向
orientationボックスの回転
maxDistanceキャストの最大の長さ
layerMask レイヤーマスク はレイキャストするときに選択的に衝突を無視するために使用します。
queryTriggerInteractionトリガーに設定されているものも検索対象にするか

戻り値

bool 接触が起これば true を返します。

説明

ボックスのレイを飛ばし、オブジェクトコライダーの付いたオブジェクトがヒットするかを調べ、ヒットしたら詳細情報を返します


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

パラメーター

centerボックスの中心
halfExtents各軸についてのボックスサイズの半分
directionボックスを投射する方向
hitInfoIf true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit).
orientationボックスの回転
maxDistanceキャストの最大の長さ
layerMask レイヤーマスク はレイキャストするときに選択的に衝突を無視するために使用します。
queryTriggerInteractionトリガーに設定されているものも検索対象にするか

戻り値

bool 接触が起これば 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;

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); } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961