/// <summary> /// 射线检测 /// </summary> /// <param name="hit">检测的结果</param> /// <param name="ray">射线</param> /// <param name="dist">距离</param> /// <param name="checkType">类型</param> /// <returns>是否发生碰撞</returns> public bool RayCheck(out NCheckResult hit, Ray ray, float dist, LineCheckType checkType) { NLevel mainLv = NLevelEditorEngine.Instance.MainLevel; Vector3 lineEnd = ray.Position + ray.Direction * dist; return(mainLv.LineCheck(out hit, ray.Position, lineEnd, checkType)); }
/// <summary> /// 鼠标射线检测 /// </summary> /// <param name="hit">检测的结果</param> /// <param name="mousePosition">鼠标位置的屏幕坐标</param> /// <param name="dist">射线检测的长度</param> /// <param name="checkType">检测碰撞类型</param> /// <returns>如何发生碰撞则返回true</returns> public void MouseRayCheck(out NCheckResult hit, Point mousePosition, float dist, LineCheckType checkType) { //Point clientPt = this.PointToClient(mousePosition); Point clientPt = mousePosition; Ray ray = m_view.Camera.GetMouseRay(clientPt.X, clientPt.Y); if (!RayCheck(out hit, ray, dist, checkType)) { hit.dist = 500; hit.location = ray.Position + ray.Direction * hit.dist; } }