public void Esconderse(bool a, Vector2 en) { transform.position = en; Invisible(a); vida.Invulnerable(a); jugador.isKinematic = a; movimientoLibre = !a; jugador.Sleep(); GetComponent <SpriteRenderer>().enabled = !a; piernas.Invisible(a); LuzConica(!a); }
// 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(); }; }