Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance, int layerMask);

参数1:Ray,射线的起点坐标和方向向量

  Vector3 RayDir = m_OwnerPlayer.transform.forward;

  Ray ray = new Ray(m_OwnerPlayer.transform.localPosition, RayDir);

  主要说说Ray构造函数的参数2,是单位向量,切记,单位向量。可以用transform.forward,也可以用 (m_OwnerPlayer.transform.localPosition – LastPosition).normalized 。

参数2:碰撞物体的返回信息

参数3:射线的距离

参数4:过滤层,如果层是Default,那么写法是  1<<0

当怀疑函数有问题时,请打印自己的射线,用函数 Debug.DrawRay,参数与 RayCast类似

下面是例子:

Vector3 RayDir = m_OwnerPlayer.transform.forward;
//打印射线
Debug.DrawRay(m_OwnerPlayer.transform.localPosition, RayDir, Color.red);
Ray SceneRay = new Ray(m_OwnerPlayer.transform.localPosition, RayDir);
//加射线
RaycastHit SceneHit;
if (Physics.Raycast(SceneRay, out SceneHit, 5000, 1))
{
    if (null == SceneHit.collider ||
        null == SceneHit.collider.gameObject)
    {
        return;
    }
    if (SceneHit.collider.gameObject.name == "wushi_3_SnakeBody")
    {
    }
}

参考帖子:

Transform.Forward和Vector3.Forward的正确使用方法_linuxheik的专栏-CSDN博客_transform.forward

Unity Physics.Raycast 深入理解_pdw_jsp的专栏-CSDN博客