Ejemplo n.º 1
0
    // based on: https://docs.unity3d.com/ScriptReference/AI.NavMesh.SamplePosition.html
    public static bool SamplePosition(Vector2 sourcePosition, out NavMeshHit2D hit, float maxDistance, int areaMask)
    {
        NavMeshHit hit3D;

        if (NavMesh.SamplePosition(NavMeshUtils2D.ProjectTo3D(sourcePosition), out hit3D, maxDistance, areaMask))
        {
            hit = new NavMeshHit2D {
                position = NavMeshUtils2D.ProjectTo2D(hit3D.position),
                normal   = NavMeshUtils2D.ProjectTo2D(hit3D.normal),
                distance = hit3D.distance,
                mask     = hit3D.mask,
                hit      = hit3D.hit
            };
            return(true);
        }
        hit = new NavMeshHit2D();
        return(false);
    }
Ejemplo n.º 2
0
 public static bool Raycast(Vector2 sourcePosition, Vector2 targetPosition, out NavMeshHit2D hit, int areaMask)
 {
     if (NavMesh.Raycast(NavMeshUtils2D.ProjectTo3D(sourcePosition),
                         NavMeshUtils2D.ProjectTo3D(targetPosition),
                         out NavMeshHit hit3D,
                         areaMask))
     {
         hit = new NavMeshHit2D {
             position = NavMeshUtils2D.ProjectTo2D(hit3D.position),
             normal   = NavMeshUtils2D.ProjectTo2D(hit3D.normal),
             distance = hit3D.distance,
             mask     = hit3D.mask,
             hit      = hit3D.hit
         };
         return(true);
     }
     hit = new NavMeshHit2D();
     return(false);
 }