Unity3d 单位矢量光线投射调试
我正试图用2D将我的光线投射绘制到屏幕上Unity3d 单位矢量光线投射调试,unity3d,Unity3d,我正试图用2D将我的光线投射绘制到屏幕上 RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector3.down, 2f, layerMask); Debug.DrawRay(transform.position, (transform.position + new Vector3(transform.position.x, transform.position.y+250, transform.position
RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector3.down, 2f, layerMask);
Debug.DrawRay(transform.position, (transform.position + new Vector3(transform.position.x, transform.position.y+250, transform.position.z)), Color.green);
Debug.DrawLine(transform.position, (transform.position + new Vector3(transform.position.x, transform.position.y+250, transform.position.z)), Color.magenta);
Debug.DrawLine(transform.position, (transform.position + new Vector3(hit.normal.x, hit.normal.y, -10)), Color.magenta);
Debug.DrawLine(transform.position, (transform.position + new Vector3(hit.normal.x, hit.normal.y, 10)), Color.magenta);
光线投射正在工作,但我想看看。目前我什么也没看到。我本以为我只需要原始的3D向量变换+它的位移。但是似乎什么都不起作用。如果不给它一个持续时间,我很确定
Debug.DrawRay
只会持续一帧。因此,要么尝试给它一个持续时间:
Debug.DrawRay(transform.position, (transform.position + new Vector3(transform.position.x, transform.position.y+250, transform.position.z)), Color.green, 2.0f);
或者在更新或绘图小控件中绘制:
private void OnDrawGizmos()
{
Debug.DrawRay(transform.position, (transform.position + new Vector3(transform.position.x, transform.position.y + 250, transform.position.z)), Color.green);
}
上面的代码呈现了一条每帧都可见的绿线。基本上就是你所期望的
无论如何,它都不必在OnDrawGizmos中,但使用OnDrawGizmos进行调试具有将调试代码与其他代码巧妙分离的优势,因此我倾向于使用该解决方案