private void OnSceneGUI() { DetectarRuta punto = target as DetectarRuta; }
// 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(); }; }
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); }
public void Detector(DetectarRuta de) { detector = de; }