Unity 中检测射线穿过的所有的物体

 在开发中 有个需求,射线要检测所有穿过的物体。

代码如下:

 

using UnityEngine;

public class HitCollider : MonoBehaviour
{
    
    public float raycastDistance = Mathf.Infinity;
    
    // Update is called once per frame

    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        //new Ray(transform.position, transform.forward); // 从当前物体出发,沿着其正前方发射一条射线  
        RaycastHit[]
            hits = new RaycastHit[Physics.RaycastAll(ray, raycastDistance)
                .Length]; // 使用Physics.RaycastAll获取所有被射线击中的物体,并存储在hits数组中  

        for (int i = 0; i < hits.Length; i++)
        {
            hits[i] = Physics.RaycastAll(ray, raycastDistance)[i]; // 将射线检测的结果赋值给hits数组  
            Debug.Log("Hit " + i + " object: " + hits[i].collider.gameObject.name); // 输出被击中的物体名称  
        }
    }
}

运行结果

Unity 中检测射线穿过的所有的物体_第1张图片

 

你可能感兴趣的:(unity,游戏引擎)