IEnumerator Disparo() { estaatacando = true; while (true) { anims.SetTrigger("disparo"); Vector3 dirAPlayer = (player.transform.position - transform.position).normalized; RaycastHit2D hit = Physics2D.Raycast(transform.position, dirAPlayer, 2.5f, capaPlayer); if (hit.collider != null) { VidaYDanio scr = hit.transform.GetComponent <VidaYDanio>(); scr.RestarVidas(danioSoldado); Debug.Log("au"); } yield return(new WaitForSeconds(2f)); } }
// Update is called once per frame void Update() { Clampear(); float distanciaRandom = Random.Range(4f, 7f); float distAPlayer = Vector3.Distance(transform.position, player.transform.position); if (distAPlayer >= 5 && distAPlayer < 9) //Rango de visión { StopAllCoroutines(); estaatacando = false; Vector3 distanciaPlayer = player.transform.position - transform.position; float distaciaX = distanciaPlayer.x; rb.velocity = new Vector2(5 * Mathf.Sign(distaciaX), rb.velocity.y); anims.SetBool("andando", true); if (distaciaX > 0) { sR.flipX = false; } else if (distaciaX < 0) { sR.flipX = true; } } else if (distAPlayer > 2 && distAPlayer < 5) //Rango de ataque { anims.SetBool("andando", false); if (!estaatacando) { StartCoroutine(Disparo()); } } else if (distAPlayer <= 2) { StopAllCoroutines(); estaatacando = false; anims.SetBool("andando", false); anims.SetTrigger("melee"); VidaYDanio scr = gameObject.GetComponent <VidaYDanio>(); scr.RestarVidas(5); } }