在开发中 有个需求,射线要检测所有穿过的物体。
代码如下:
文章来源地址https://www.toymoban.com/news/detail-633093.html
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); // 输出被击中的物体名称
}
}
}
运行结果
文章来源:https://www.toymoban.com/news/detail-633093.html
到了这里,关于Unity 中检测射线穿过的所有的物体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!