/// <summary> /// 射线检测Actor /// </summary> /// <param name="ray">指定的射线</param> /// <param name="layerid">参与检测的层</param> /// <returns>射线检测到Actor(射线从起点发出,第一个检测到的Actor),若没有检测到任何Actor,返回NULL</returns> static public Actor IntersectWorld_Actor(ref Ray ray, LayerID layerid) { if (LayerID.Min <= layerid && layerid < LayerID.Max) { return(ICall_IntersectWorld_Actor(ref ray, LayerMark.LayerIDToUINTMark(layerid))); } return(null); }
/// <summary> /// 射线检测指定的Actor /// </summary> /// <param name="act">要检测的Actor</param> /// <param name="ray">射线</param> /// <param name="layerid">参与检测的层</param> /// <param name="pos">射线打到Actor上的点的坐标</param> /// <returns>是否检测到Actor</returns> static public bool IntersectActor(Actor act, ref Ray ray, LayerID layerid, out Vector3 pos) { if (LayerID.Min <= layerid && layerid < LayerID.Max && act != null) { return(ICall_IntersectWorld_IntersectActor(act, ref ray, LayerMark.LayerIDToUINTMark(layerid), out pos)); } pos = Vector3.Zero; return(false); }
/// <summary> /// 获取射线检测到场景里(网格)Actor的第一个点的坐标 /// </summary> /// <param name="ray">指定的射线</param> /// <param name="layerid">参与检测的层</param> /// <param name="outPoint">返回值(检测到的第一个点的坐标)</param> static public void IntersectWorld_Point(ref Ray ray, LayerID layerid, out Vector3 outPoint) { if (LayerID.Min <= layerid && layerid < LayerID.Max) { ICall_IntersectWorld_Point(ref ray, LayerMark.LayerIDToUINTMark(layerid), out outPoint); } else { outPoint = Vector3.Zero; } }