private void OnSceneGUI()
 {
     DetectarRuta punto = target as DetectarRuta;
 }
Example #2
0
    // Use this for initialization
    void Start()
    {
        Animator      animador       = GetComponent <Animator>();
        Vida          vida           = GetComponent <Vida>();
        DetectarRuta  detectorRuta   = GetComponent <DetectarRuta>();
        GeneradoOndas generadorOndas = GetComponentInChildren <GeneradoOndas>();

        este      = GetComponent <Monstruo>();
        este.Rb2D = GetComponent <Rigidbody2D>();
        Cabreo      cabreometro = GetComponentInChildren <Cabreo>();
        Rigidbody2D jugadorP    = GameObject.FindGameObjectWithTag("Player").GetComponent <Rigidbody2D>();

        cabreometro.Iniciar(cabreoMaximo, cabreoUmbral, tasaAumentoDeCabreo, tasaDescensoDeCabreo);
        este.Tipo(TipoMonstruo.Fantasma);

        este.CambiarEstadoMonstruo(estadoInicial);
        este.Comportamiento = () => {
            audioGrito.volume = cabreometro.Nivel();

            este.Rb2D.isKinematic = !(este.EstadoMonstruoActual() == EstadosMonstruo.SiguiendoJugador || este.EstadoMonstruoActual() == EstadosMonstruo.Proyectado);

            switch (este.EstadoMonstruoActual())
            {
            case EstadosMonstruo.Huyendo:
                vida.Invulnerable(true);
                este.Rb2D.velocity = (2 * este.Rb2D.position - cabreometro.JugadorRB().position).normalized * velocidadHuida;
                GiroInstantaneo(este.Rb2D.position - jugadorP.position);
                GameManager.instance.MontruoHuye(TipoMonstruo.Fantasma);
                audioGrito.Stop();
                Destroy(gameObject, 10f);
                break;

            case EstadosMonstruo.Proyectado:
                vida.Invulnerable(true);
                if (Time.time - este.Cronometro > tiempoAturdimiento)
                {
                    este.CambiarEstadoMonstruo(EstadosMonstruo.Quieto);
                }
                break;

            default:
                este.CambiarEstadoMonstruo(cabreometro.CambioCabreo());
                switch (este.EstadoMonstruoActual())
                {
                case EstadosMonstruo.Quieto:
                    Parar();
                    vida.Invulnerable(true);
                    generadorOndas.PararOndas();
                    break;

                case EstadosMonstruo.SiguiendoJugador:
                    vida.Invulnerable(false);
                    MoverseHacia(cabreometro.JugadorRB().position, velocidadPersecucion);
                    generadorOndas.GenerarOndas();
                    break;
                }
                break;
            }
        };

        audioGrito.Play();
        audioGrito.volume = 0f;
        este.Morir        = () =>
        {
            generadorOndas.enabled = false;
            animador.SetTrigger("muriendo");
            GameManager.instance.MonstruoMuerto(TipoMonstruo.Fantasma);
            este.enabled = false;
            este.Rb2D.Sleep();
            este.Rb2D.simulated = false;
            Destroy(generadorOndas.gameObject);
            audioGrito.Stop();
            Destroy(gameObject, 5f);
        };

        este.Atacar = () =>
        {
            animador.SetTrigger("atacando");
            vida.Invulnerable(false);
        };

        este.Atacado = (Jugador a) =>
        {
            if (este.EstadoMonstruoActual() == EstadosMonstruo.SiguiendoJugador)
            {
                este.Empujar(a.transform.position, a.fuerzaEmpujon);
                vida.Danyar(a.Danyo(), TipoMonstruo.Panzudo);
                este.CambiarEstadoMonstruo(EstadosMonstruo.Proyectado);
                cabreometro.Tranquilizar();
            }
        };

        este.FinalAtaque = () =>
        {
            vida.Invulnerable(true);
        };

        este.EntrandoLuz = () =>
        {
            generadorOndas.SumarLuz();
        };

        este.SaliendoLuz = () =>
        {
            generadorOndas.RestarLuz();
        };
    }
Example #3
0
    private void OnSceneGUI()
    {
        PoligonoRecorrido recorrido = target as PoligonoRecorrido;
        DetectarRuta      detector  = recorrido.GetComponent <DetectarRuta>();

        recorrido.transform.position = (Vector2)recorrido.transform.position;
        Transform  agarraderaTransform  = recorrido.transform;
        Quaternion agarraderaDeRotacion = Tools.pivotRotation == PivotRotation.Local ? agarraderaTransform.rotation : Quaternion.identity;

        Vector2[] puntos = new Vector2[recorrido.numeroDePuntos];
        if (recorrido.Puntos() == null || recorrido.numeroDePuntos != recorrido.Puntos().Length)
        {
            recorrido.CrearPuntos(recorrido.numeroDePuntos);
        }
        for (int i = 0; i < recorrido.numeroDePuntos; i++)
        {
            Undo.RecordObject(target, "Move Point");
            EditorUtility.SetDirty(target);
            puntos[i] = recorrido.Puntos()[i];
        }


        PuntoRecorrido[] puntosRecorrido  = GameObject.FindObjectsOfType <PuntoRecorrido>();
        PuntoRecorrido[] puntosAuxiliares = new PuntoRecorrido[puntosRecorrido.Length];
        int j = 0;

        for (int i = 0; i < puntos.Length; i++)
        {
            Handles.color = Color.white;
            Handles.DrawLine(puntos[i], puntos[(i + 1) % puntos.Length]);
            Vector2 distancia = puntos[(i + 1) % puntos.Length] - puntos[i];
            Handles.ArrowHandleCap(0, puntos[i],
                                   Quaternion.LookRotation(distancia),
                                   3,
                                   EventType.Repaint);

            string aux = "<color=red>" + i + "</color>";
            Handles.Label(puntos[i], aux, estilo);
            EditorGUI.BeginChangeCheck();
            puntos[i] = Handles.FreeMoveHandle(i, puntos[i], agarraderaDeRotacion, 0.5f, Vector3.one * 0.1f, DibujarAgarraderaPunto);
            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(detector, "Move Point");
                EditorUtility.SetDirty(detector);
                recorrido.Puntos()[i] = puntos[i];
            }
            else
            {
                Undo.RecordObject(detector, "Move Point");
                EditorUtility.SetDirty(detector);
                puntosAuxiliares[j]   = AjustarseAPuntoRecorrido(puntos[i], puntosRecorrido);
                recorrido.Puntos()[i] = puntosAuxiliares[j].transform.position;
                j++;
                DibujarAgarraderaPunto(i, puntos[i], agarraderaDeRotacion, 0.5f, EventType.Repaint);
            }
        }

        PuntoRecorrido[] puntosFinales = new PuntoRecorrido[j];
        for (int i = 0; i < j; i++)
        {
            puntosFinales[i] = puntosAuxiliares[i];
        }

        detector.CrearPuntosRuta(puntosFinales);
    }
Example #4
0
 public void Detector(DetectarRuta de)
 {
     detector = de;
 }