Unity 实现射线检测
射线检测一般是由相机发射射线来实现,所以脚本一般挂载在相机上,为了实现射线的实时检测,该方法一般写在Update中
void Update()
{
//时间是为了实现射线长按;
delayTime += Time.deltaTime;
//在当前位置向前发射一条射线
Ray ray = new Ray(transform.position, transform.forward);
//绘制射线(绿色)
Debug.DrawRay(ray.origin, ray.direction * raycastDistance, Color.yellow);
//射线检测
RaycastHit hitInfo;
if (Physics.Raycast(ray, out hitInfo, raycastDistance))
{
//如果射线碰撞到物体,在这里出来碰撞逻辑
if (hitInfo.collider.gameObject.GetComponent<TriggerController>() != null && delayTime >= 2)
{
if (catObj != null)
{
if (catObj.name != hitInfo.collider.gameObject.name)
{
//通过名字判断是否选中物体
}
}
}
}
else
{
if (catObj != null)
{
}
delayTime = 0;
}
}
我的程序涉及到一些开发,所以和常规的射线检测代码有差异,注意甄别。