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