在开发中 有个需求,射线要检测所有穿过的物体。
代码如下:
using UnityEngine;public class HitCollider : MonoBehaviour
{public float raycastDistance = Mathf.Infinity;// Update is called once per framevoid 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); // 输出被击中的物体名称 }}
}
运行结果