Ejemplo n.º 1
0
 public CasillaGrid(CasillaGrid casilla)
 {
     posicion    = casilla.getPosicion();
     coordenadas = casilla.getPosicionGrid();
     adyacentes  = casilla.getAdyacentes();
     tipo        = casilla.getTipoCasilla();
 }
Ejemplo n.º 2
0
    protected void Update()
    {
        actualizaBarraSalud();

        if (seleccionada)
        {
            controlador.selected.GetComponent <MeshRenderer>().enabled = true;
            controlador.selected.transform.position = new Vector3(transform.position.x, transform.position.y, controlador.selected.transform.position.z);
        }

        int    coordenadaGridX = (int)controlador.getCasillaActual(this).getPosicionGrid().x;
        int    coordenadaGridY = (int)controlador.getCasillaActual(this).getPosicionGrid().y;
        Accion a = Accion.buscaEnemigo;

        this.setCoordenadas(coordenadaGridX, coordenadaGridY);

        bool click = Input.GetMouseButtonDown(1);

        if (seleccionada && click || path.Count > 0)
        {
            path.Clear();
            if (click)
            {
                target = controlador.getCasillaRaton();
            }

            if (target != null)
            {
                cg         = controlador.getCasillaActual(this);
                adyacentes = cg.getAdyacentes();

                if (moveIndex[target.getTipoCasilla()] == Mathf.Infinity)
                {
                    target = getClosest(cg, target);
                }

                setPath(AStar(cg, target, moveIndex));
                MovePlayer();
            }
        }


        if (!seleccionada)
        {
            a      = sbr.tomaDecision(this);
            target = new CasillaGrid(parseAction(a));


            if (target != null)
            {
                if (patrullando)
                {
                    List <CasillaGrid> patrullaActual = patrullas[numeroPatrulla];
                    int size = patrullaActual.Count;
                    if (Vector3.Distance(transform.position, target.getPosicion()) < 0.5f)
                    {
                        indicePatrulla = (indicePatrulla + 1) % size;
                        target         = patrullaActual[indicePatrulla];
                    }
                }
                //TODO: hacer que se compruebe constantemente la posición del target, y cuando cambie, volver a lanzar el A*
                //COMPROBAR LA POSICIÓN FINAL DEL TARGET DE CADA UNIDAD

                cg         = controlador.getCasillaActual(this);
                adyacentes = cg.getAdyacentes();


                setPath(AStar(cg, target, moveIndex));
                MovePlayer();
            }
        }
        actualizarIcono(a);
    }