在开发中 有个需求,射线要检测所有穿过的物体。
代码如下:
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); // 输出被击中的物体名称
}
}
}
运行结果