private bool ColisionaConZonaReaparicion(Enemigo enemigo) { float limiteX = GameObject.FindGameObjectWithTag("ZonaAparicionEnemigos") .GetComponent <Collider2D>().bounds.min.x; float maximaX = enemigo.GetComponent <Collider2D>().bounds.max.x; return(maximaX >= limiteX ? true : false); }
private void Start() { //Inicialización: Enemigo = this.gameObject; TransformEnemigo = Enemigo.transform; CuerpoEnemigo = Enemigo.GetComponent <Rigidbody2D>(); AnimatorEnemigo = Enemigo.GetComponent <Animator>(); ArmaGuardada = Arma; _LayerSuelo = GameObject.Find("HUD").GetComponent <PlayerAndHUDController>().LayerSuelo; _VerificadorSuelo = this.transform.Find("ComprobadorSuelo"); }
// este script lo tiene un obstaculo especial, que se encarga de afectar al jugador, si este se mueve mientras está dentro de su collider public void OnTriggerStay(Collider other) { if (other.CompareTag("Player")) { if (Input.GetAxis("Horizontal") != 0) { Sonar(privateAudio); other.gameObject.GetComponent <PlayerMovement>().StartCoroutine("Caerse"); Enemigo.GetComponent <EnemyScript>().StartCoroutine("AdelantarEnemigo"); } } }
// este tipo de obstaculo tiene un efecto distinto a otros obstaculos cuando se encuentra con el tag player new public void OnTriggerEnter(Collider other) { if (other.CompareTag("Player")) { Sonar(privateAudio); other.gameObject.GetComponent <PlayerMovement>().StartCoroutine("Caerse"); Enemigo.GetComponent <EnemyScript>().StartCoroutine("AvanzarEnemigo"); } // e igualmente se destruye al colisionar con el tag destructor if (other.CompareTag("Destructor")) { Destroy(gameObject); } }
//esta clase de obstaculos, tiene unas instrucciones que seguir cuando colisiona con el jugador // como atrasar la posicion del enemigo e ingresar a otros scripts y alterar valores que se almacenan en estos new public void OnTriggerEnter(Collider other) { if (other.CompareTag("Player")) { Sonar(privateAudio); GameManager.Instance.SubirTurbo(); GameManager.Instance.AlterarTotalMonedas(1); Enemigo.GetComponent <EnemyScript>().StartCoroutine("RetrocederEnemigo"); } if (other.CompareTag("Destructor")) { Destroy(gameObject); } }
public void DesactivarSpawn() { for (int i = 0; i < spawns.Length; i++) { spawns[i].GetComponent <SpawnerPigs>().enabled = false; } enemigos = GameObject.FindGameObjectsWithTag("Enemigo"); foreach (GameObject Enemigo in enemigos) { if (Enemigo.GetComponent <PigAI>() != null) { Destroy(Enemigo); } } }
/// <summary> /// Activa la Función de Ataque del enemigo, activandole su animación y verificando si se debe lanzar el cuchillo (Que se activa solo cuando el animation event lo indica en /// el método de LanzarCuchillo) /// </summary> private void Atacar() { //Animación de Ataque: AnimatorEnemigo.SetBool("attack", true); //Crear el sprite del cuchillo en el segundo: if (isLanzarCuchillo) { isLanzarCuchillo = false; Arma = (GameObject)Instantiate(Arma, PosicionadorArma.transform.position, PosicionadorArma.transform.rotation, TransformEnemigo); Arma.transform.localPosition = PosicionadorArma.transform.localPosition; if (!Enemigo.GetComponent <SpriteRenderer>().flipX) { Arma.GetComponent <Rigidbody2D> ().velocity = new Vector2(-10, 0); } else { Arma.GetComponent <Rigidbody2D> ().velocity = new Vector2(10, 0); } Arma.name = "Cuchillo1"; Arma = ArmaGuardada; } }
public void Respawn() { barraVida.transform.localScale = new Vector3(barraVidaInicialX, barraVida.transform.localScale.y, barraVida.transform.localScale.z); //Aparición if (borracho) { DisminuirCheck(); //Esto activa seHaDesactivadoUnCheck jugaPlayer.setDesnudo(true); } if (seHaDesactivadoUnCheck) { CheckPoints[order + 1].ReiniciarCheck(); //Para poder coger el ultimo alcanzado cuando revivamos (a no ser que nos emborrachemos) seHaDesactivadoUnCheck = false; } //Reactivar Objetos foreach (GameObject Botella in botellas) { Botella.SetActive(true); } ReiniciarStats(); //Posicion del jugador (checkpoint) if (order < 0) { order = 0; CheckPoints[0].cogido = true; } Jugador.transform.position = CheckPoints[order].transform.position; //Barca if (movBarca != null) { movBarca.muerto = true; movBarca.fin = true; movBarca.GetComponent <Collider2D>().isTrigger = true; movBarca.transform.position = new Vector3(-543.9f, 0.79f, 0.5f); movBarca.movX = 9; } //Enemigos int i = 0; foreach (GameObject Enemigo in enemigos) { if (Enemigo.GetComponent <EnemyAI>() != null) { Enemigo.GetComponent <EnemyAI>().Respawn(); } else if (Enemigo.GetComponent <ShieldEnemyAI>() != null) { Enemigo.GetComponent <ShieldEnemyAI>().Respawn(); } Enemigo.transform.position = posicionesEnemigos[i]; Enemigo.SetActive(true); Enemigo.transform.eulerAngles = new Vector3(0, 0, 0); i++; } if (desactivaSpawn != null) { desactivaSpawn.DesactivarSpawn(); } if (bossDelNivel != null) { if (bossDelNivel.GetComponent <FinalBoss>() != null) { bossDelNivel.GetComponent <FinalBoss>().Respawn(); } else if (bossDelNivel.GetComponent <FinalBossFase2>() != null) { bossDelNivel.GetComponent <FinalBossFase2>().Respawn(); } else if (bossDelNivel.GetComponent <BossIA>() != null) { bossDelNivel.GetComponent <BossIA>().Respawn(); } } if (AudioManager.Instance.audioSourceBoss.activeInHierarchy == true) { AudioManager.Instance.audioSourceBoss.SetActive(false); AudioManager.Instance.Musica1(); } }
/// <summary> /// Método de Físicas. Se utiliza para mover al enemigo. Hacer que ataque y salte. /// </summary> private void FixedUpdate() { //Detectar Suelo: _EnSuelo = Physics2D.OverlapCircle(new Vector2(_VerificadorSuelo.position.x, _VerificadorSuelo.position.y), _RangoDetectarSuelo, _LayerSuelo); if (Enemigo.GetComponent <SpriteRenderer> ().flipX) //Viendo hacia la derecha: { velocidadCaminar = Mathf.Abs(velocidadCaminar); PosicionadorArma.transform.localPosition = new Vector3(Mathf.Abs(PosicionadorArma.transform.localPosition.x), PosicionadorArma.transform.localPosition.y, PosicionadorArma.transform.localPosition.z); } else //Viendo hacia la izquierda: { velocidadCaminar = velocidadCaminar == Mathf.Abs(velocidadCaminar) ? velocidadCaminar * -1 : velocidadCaminar; if (PosicionadorArma.transform.localPosition.x == Mathf.Abs(PosicionadorArma.transform.localPosition.x)) { PosicionadorArma.transform.localPosition = new Vector3(PosicionadorArma.transform.localPosition.x * -1, PosicionadorArma.transform.localPosition.y, PosicionadorArma.transform.localPosition.z); } } if (Estatico && _ContadorAlEstarEstatico <= 0 && !AnimatorEnemigo.GetBool("attack") && !AnimatorEnemigo.GetBool("playerattack")) { _ContadorAlEstarEstatico = 5; Voltear = true; } else if (Estatico) { _ContadorAlEstarEstatico -= Time.deltaTime; } else if (!Estatico) { _ContadorAlEstarEstatico = 5; } //Caminar y Atacar: if (!JugadorEnPlataforma) // Si el jugador no esta en la plataforma no atacara y caminara o se mantendrá quieto: { //Verificar si el esqueleto está configurado para caminar o para estar estático: if (Estatico) { _animatorEnemigo.SetFloat("walk", -0.1f); DejarAtacar(); } else { CuerpoEnemigo.velocity = new Vector2(velocidadCaminar, CuerpoEnemigo.velocity.y); _animatorEnemigo.SetFloat("walk", 0.1f); DejarAtacar(); } } else //En cambio si el jugador esta en la plataforma no caminara y atacara: { Atacar(); } //Voltear al Enemigo if (Voltear) { Enemigo.GetComponent <SpriteRenderer> ().flipX = Enemigo.GetComponent <SpriteRenderer> ().flipX ? false : true; Vector2 ColliderEsquivador = transform.Find("ColliderEsquivador").GetComponent <BoxCollider2D>().offset; transform.Find("ColliderEsquivador").GetComponent <BoxCollider2D>().offset = new Vector2(Mathf.Abs(ColliderEsquivador.x) == ColliderEsquivador.x ? ColliderEsquivador.x * -1 : Mathf.Abs(ColliderEsquivador.x), ColliderEsquivador.y); Voltear = false; } //Hacer que siempre valla hacia donde mira: if (_Saltar) { AnimatorEnemigo.SetFloat("vspeed", 0.1f); } else { CuerpoEnemigo.velocity = new Vector3(CuerpoEnemigo.velocity.x, CuerpoEnemigo.velocity.y - Time.deltaTime); } }
public EnemigoDesvanecidoEstado(Enemigo enemigo) { enem = enemigo; agent = enem.GetComponent <UnityEngine.AI.NavMeshAgent>(); }