Пример #1
0
    void DesactivaInteractivo()
    {
        if (interactivoUltimo == null)
        {
            return;
        }

        interactivoUltimo.Out();
        interactivoUltimo = null;
    }
Пример #2
0
    public void SeguirObjetivo(Interactivo nuevoObjetivo)    //Método que establece como "objetivo" a un objeto que contenga la clase "Interactivo".
    {
        agente.stoppingDistance = nuevoObjetivo.radio * .8f; //"stoppingDistance" es un método del componente "NavMeshPro" que almacena la distancia entre el jugador y su objetivo a la que el "agente" (jugador)
                                                             //se detiene para no colisionar con su objetivo.
                                                             //Establezco aquí entonces, que la distancia a la que se detiene mi jugador, es el radio de mi objetivo (Recordemos que los objetos "Interactivos"
                                                             // poseen un gizmo con un radio, que determina su espacio de interacción; por ende, la distancia a la que se detiene el jugador, será el radio de su
                                                             //objetivo, multiplicado por .8 (Para que sea lo más exacto posible)

        agente.updateRotation = false;                       //Desactivo la rotación automática, porque esta se manejará en el método llamado "MirarObjetivo".
                                                             //Esto por la sig razón: Cuando nuestro jugador se detiene en el la distancia radio de su objetivo, la rotación ya no se actualiza (Es por ello que debemos encargarnos de esta con un método)

        objetivo = nuevoObjetivo.posicionInteraccion;        //Al asignarle a mi objetivo la posición de mi argumento "nuevoObjetivo", permite que el condiciona de la línea 23 (El cual se encarga de desplazar al jugador
        //hacia la pos de objetivo) se ejecute.
    }
Пример #3
0
    void RemoverObjetivo()          //Método que remueve la "atención" del objetivo.
    {
        if (objetivo != null)       //Si tenemos un objetivo...
        {
            objetivo.Desenfocado(); //Ejecuta el método de mi objetivo.
        }

        enemigo    = null;                   //Enemigo será igual a nulo (Si volvemos a enfocar a un enemigo, entonces mi variable obtendrá su componente, pero al desenfocarlo, lo borrará)
        autoAtaque = false;                  //No habra autoataque
        barraHabilidades.SetActive(false);   //Y mi barra de habilidades será escondida (Porque no hay objetivo)

        objetivo = null;                     //Establece mi objetivo como nulo. (Solo existe para saber quien es el objetivo, en el inspector.
        movimiento.DejaDeSeguirAlObjetivo(); //Accedo a mi variable "movimiento" (Que posee las propiedades de la clase "MotorJugador" y ejecuto el método "DejarDeSeguirAlObjetivo").
    }
Пример #4
0
    void Enfocar(Interactivo nuevoObjetivo) //Método que establece un objetivo (Tipo objeto, no mision), y que toma como argumento todo objeto que posea la clase "Interactivo".
    {
        if (nuevoObjetivo != objetivo)      //Si mi nuevo objetivo no es el objetivo actual, entonces...
        {
            if (objetivo != null)           //Y si este objetivo actual no es nulo...
            {
                objetivo.Desenfocado();     //Desenfocamos el objetivo anterior.
            }

            objetivo = nuevoObjetivo;                        //Establezco que mi objetivo, será el objeto seleccionado. (Solo existe para verlo en el inspector)

            if (objetivo.GetComponent <Enemigo>() != null)   //Si mi objetivo es un enemigo (Es decir, si el objetivo tiene una clase de "Enemigo", entonces...
            {
                enemigo = objetivo.GetComponent <Enemigo>(); //Mi varialbe enemigo almacenará las propiedades y características del componente del objetivo.
                barraHabilidades.SetActive(true);            //Si mi objetivo es un enemigo, entonces activo la interfaz de la barra de habilidades.

                if (!autoAtaque)                             //Si autoAtaque es falso (Es decir, que no esté realizando autoAtaque), entonces...
                {
                    autoAtaque = true;                       //Autoataque será verdadero.
                }
            }

            else //Si mi objetivo no ntiene componente de enemigo...
            {
                enemigo = null; //entonces enemigo sera nulo.
            }


            movimiento.SeguirObjetivo(nuevoObjetivo); //Accedo a mi variable "movimiento" (Que posee las propiedades de la clase "MotorJugador" y ejecuto el método "SeguirObjetivo"
                                                      // el cuál tomará los valores de mi argumento "nuevoObjetivo".
        }


        if (objetivo != null)             //Si mi objetivo no es nulo...
        {
            objetivo.Enfocado(transform); //Cuando interactue con mi objetivo, este correrá el método "Enfocado" que utiliza como argumento la posición de mi jugador (Transform).
        }

        else
        {
            autoAtaque = false;
        }
    }
Пример #5
0
    // Update is called once per frame
    void Update()
    {
        Debug.DrawRay(camara.position, camara.forward * distancia_rayo, Color.blue, duracion_rayo);
        Ray        ray = new Ray(camara.position, camara.forward);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, distancia_rayo, ~ExclusionLayers))
        {
            //VRInteractiveItem interactible = hit.collider.GetComponent<VRInteractiveItem>();

            objeto_interactivo = hit.collider.GetComponent <Interactivo>();

            interactivoActual = objeto_interactivo;



            objeto_hit = hit.collider.gameObject;
            if (objeto_interactivo && objeto_interactivo != interactivoUltimo)
            {
                objeto_interactivo.Over();
            }
            if (objeto_interactivo != interactivoUltimo)
            {
                DesactivaInteractivo();
            }

            interactivoUltimo = objeto_interactivo;
            if (objeto_interactivo?.tipo == 1)
            {
                //print("tipo puerta");
            }
        }
        else
        {
            DesactivaInteractivo();
            interactivoActual = null;
        }
    }
Пример #6
0
 public Manejador(Cuenta cuenta, Mapa mapa, PersonajeJuego personaje)
 {
     movimientos  = new Movimiento(cuenta, mapa, personaje);
     recoleccion  = new Recoleccion(cuenta, movimientos, mapa);
     interactivos = new Interactivo(cuenta, mapa, movimientos);
 }