Пример #1
0
    private bool IsTestLocationValid_NavMesh(Vector3 testPos)
    {
        NavMeshHit         hit;
        NavMeshQueryFilter filter = new NavMeshQueryFilter();

        filter.areaMask    = NavMesh.AllAreas;
        filter.agentTypeID = GameObject.FindGameObjectWithTag("NavMeshBuildings").GetComponent <NavMeshSurface2d>().agentTypeID;
        NavMesh.SamplePosition(testPos, out hit, 0.1f, filter);
        bool[] layersFound = LayerMaskExtensions.HasLayers(hit.mask);

        if (layersFound[0])
        {
            //Debug.Log($"0 is good at {testPos}");
            return(true);
        }
        else
        {
            //Debug.Log($"Invalid at {testPos}");
            return(false);
        }
    }
Пример #2
0
    // Update is called once per frame
    void Update()
    {
        //Debug.Log("agent id is" + );

        mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        mousePos = new Vector3(mousePos.x, mousePos.y, 0);
        NavMeshHit         hit;
        NavMeshQueryFilter filter = new NavMeshQueryFilter();

        filter.areaMask    = NavMesh.AllAreas;
        filter.agentTypeID = GameObject.FindGameObjectWithTag("NavMeshSurface").GetComponent <NavMeshSurface2d>().agentTypeID; //-1372625422;
        NavMesh.SamplePosition(mousePos, out hit, 0.1f, filter);
        bool[] layersFound = LayerMaskExtensions.HasLayers(hit.mask);

        mousePositionText.text = mousePos.ToString();
        for (int i = 0; i < layerTexts.Length; i++)
        {
            layerTexts[i].enabled = layersFound[i];
        }

        Debug.DrawLine(mousePos, mousePos + Vector3.one, Color.yellow);
        Debug.DrawLine(mousePos, mousePos - Vector3.left, Color.yellow);

        int        layerMask_calc = 1 << layerMask;
        Collider2D rchit          = Physics2D.OverlapCircle(mousePos, 0.3f, 1 << 8);

        if (rchit)
        {
            foundPhysicsObstacleText.text = rchit.transform.gameObject.name + " at " + rchit.transform.position;
            Debug.DrawLine(mousePos, rchit.transform.position, Color.yellow);
        }
        if (!rchit)
        {
            foundPhysicsObstacleText.text = "no obstacle here";
        }
    }