コード例 #1
0
    void FixedUpdate()
    {
        if (sensor.Bateria() <= 0)
        {
            return;
        }

        if (sensor.CercaDePared())
        {
            actuador.Flotar();
            actuador.Detener();
        }
        else
        {
            actuador.Flotar();
            actuador.Adelante();
        }
    }
コード例 #2
0
    /**
     * Metodo que se llama cada frame.
     * */
    void FixedUpdate()
    {
        float bateri = sensor.Bateria();

        if (bateri <= 0)
        {
            Debug.Log("Bateria murio");
            return;
        }
        if (bateri <= 450 && haciaDonde)
        {
            cambiaVista();                           //Si la bateria llega a la mitad, entonces cambia su objetivo a la base de carga
        }
        actuador.Detener();
        diferencias = playerObject.position - transform.position; //Obtiene vector de diferencia entre nuestra posicion y nuestro objetivo.
        if (sensor.TocandoPared())
        {
            Debug.Log("Choco con pared");
        }
        seguimientoCiego(diferencias);
        actuador.Flotar();
    }
コード例 #3
0
 /// <summary>
 /// Los siguientes metodos sirven para aplicar las acciones relacionadas al mismo nombre del metodo,
 /// todos aplican el estado de flotar para que el dron no se caiga o ascienda al "infinito".
 ///
 /// El metodo de Retornar() detiene todas las acciones del dron mientras la funcion de Vector3.Lerp() regresa al
 /// dron a la base de carga y evitar que otros movimientos del dron interfieran durante el proceso.
 /// </summary>
 void Avanzar()
 {
     actuador.Flotar();
     actuador.Adelante();
 }
コード例 #4
0
    // Update y FixedUpdate son similares en uso, pero por regla general se recomienda usar
    // FixedUpdate para calcular elementos físicos como el uso de Rigidbody
    void FixedUpdate()
    {
        // El agente no realiza ninguna acción si no tiene batería
        if (sensor.Bateria() <= 0)
        {
            return;
        }

        // A continuación se muestran ejemplos de uso de actuadores y sensores
        // para ser utilizados de manera manual (por una persona):

        if (Input.GetKey(KeyCode.I))
        {
            actuador.Ascender();
        }
        if (Input.GetKey(KeyCode.K))
        {
            actuador.Descender();
        }
        if (!Input.GetKey(KeyCode.I) && !Input.GetKey(KeyCode.K))
        {
            actuador.Flotar();
        }

        if (Input.GetAxis("Vertical") > 0)
        {
            actuador.Adelante();
        }
        if (Input.GetAxis("Vertical") < 0)
        {
            actuador.Atras();
        }

        if (Input.GetKey(KeyCode.J))
        {
            actuador.GirarIzquierda();
        }
        if (Input.GetKey(KeyCode.L))
        {
            actuador.GirarDerecha();
        }

        if (Input.GetAxis("Horizontal") > 0)
        {
            actuador.Derecha();
        }
        if (Input.GetAxis("Horizontal") < 0)
        {
            actuador.Izquierda();
        }


        if (sensor.TocandoBasura())
        {
            Debug.Log("Tocando basura!");
            actuador.Limpiar(sensor.GetBasura());
        }
        if (sensor.TocandoPared())
        {
            Debug.Log("Tocando pared!");
        }

        if (sensor.CercaDeBasura())
        {
            Debug.Log("Cerca de una basura!");
        }
        if (sensor.CercaDePared())
        {
            Debug.Log("Cerca de una pared!");
        }

        if (sensor.FrenteAPared())
        {
            Debug.Log("Frente a pared!");
        }


        if (Input.GetKey(KeyCode.F))
        {
            actuador.Detener();
        }
        if (Input.GetKey(KeyCode.G))
        {
            Debug.Log(sensor.Ubicacion());
        }
    }