Search Unity

how can i get y (hight) of Navmesh

Discussion in 'Navigation' started by naorgueva, Oct 16, 2019.

  1. naorgueva

    naorgueva

    Joined:
    Apr 11, 2019
    Posts:
    25
    i want a frog to move randomly on the Navmesh.
    so i have a random Vector3 in a Sphare radius (around the frog)
    i take the Vector3.Y and i move it up 800f (to make sure that its not under ground)
    then i shoot a ray down 1,000f in length.(to make sure im passing the ground)
    now if im hitting the ground im setting the NavMeshAgent to hit.point

    im trading to make a game without physics so i cant use Raycast.
    correctly im casting a ray to determine the y of the floor.

    i have Z and X axis.
    can i find the y in a different way? (without physics )
    can i get the correct Y on the navmesh surface?

    Code (CSharp):
    1.     private void JumpAround()
    2.     {
    3.  
    4.         Vector3 pointInSphare = Random.insideUnitSphere * _sphareRad;
    5.         pointInSphare.y = 800;
    6.  
    7.  
    8.         Ray ray = new Ray(pointInSphare, Vector3.down);
    9.         RaycastHit hit;
    10.  
    11.         if(Physics.Raycast(ray ,out hit, 1000.0f,  Layer))
    12.         {
    13.             pointInSphare = hit.point;
    14.             _thisNavMeshAgent.SetDestination(pointInSphare);
    15.         }
    16.     }