private void Update() { distaciaConPlayer = Mathf.Abs(player.position.x - transform.position.x); transform.localScale = new Vector3(1 * direccion, 1, 1); switch (comportamiento) { case tipoDeComportamientoEnemy.pasivo: if (_rb.velocity.magnitude < umbralVelocidad) { _rb.velocity = new Vector2(speed * direccion, _rb.velocity.y); if (transform.position.x < limitLeft) { direccion = 1; } if (transform.position.x > limitRight) { direccion = -1; } if (distaciaConPlayer < entradaZonaPersecucion) { comportamiento = tipoDeComportamientoEnemy.persecucion; } } break; case tipoDeComportamientoEnemy.persecucion: if (_rb.velocity.magnitude < umbralVelocidad) { _rb.velocity = new Vector2(speed * direccion, _rb.velocity.y); if (player.position.x > transform.position.x) { direccion = 1; } if (player.position.x < transform.position.x) { direccion = -1; } if (distaciaConPlayer > salidaZonaPersecucion) { comportamiento = tipoDeComportamientoEnemy.pasivo; } if (distaciaConPlayer < zonaAtaque) { comportamiento = tipoDeComportamientoEnemy.ataque; } } break; case tipoDeComportamientoEnemy.ataque: if (_rb.velocity.magnitude < umbralVelocidad) { _rb.velocity = new Vector2(0, _rb.velocity.y); if (player.position.x > transform.position.x) { direccion = 1; } if (player.position.x < transform.position.x) { direccion = -1; } if (distaciaConPlayer > zonaAtaque) { comportamiento = tipoDeComportamientoEnemy.persecucion; } } break; } }
private void Update() { distaciaConPlayer = Mathf.Abs(player.position.x - transform.position.x); transform.localScale = new Vector3(1 * direccion, 1, 1); switch (comportamiento) { case tipoDeComportamientoEnemy.pasivo: if (_rb.velocity.magnitude < umbralVelocidad) { _rb.velocity = new Vector2(speed * direccion, _rb.velocity.y); _anim.SetBool("Idle", false); if (transform.position.x < limitLeft) { direccion = 1; } if (transform.position.x > limitRight) { direccion = -1; } if (distaciaConPlayer < entradaZonaPersecucion) { comportamiento = tipoDeComportamientoEnemy.persecucion; } } break; case tipoDeComportamientoEnemy.persecucion: if (_rb.velocity.magnitude < umbralVelocidad) { _rb.velocity = new Vector2(speed * direccion, _rb.velocity.y); _anim.SetBool("Idle", false); if (player.position.x > transform.position.x) { direccion = 1; } if (player.position.x < transform.position.x) { direccion = -1; } if (distaciaConPlayer > salidaZonaPersecucion) { comportamiento = tipoDeComportamientoEnemy.pasivo; } if (distaciaConPlayer < zonaAtaque) { comportamiento = tipoDeComportamientoEnemy.ataque; } } break; case tipoDeComportamientoEnemy.ataque: if (_rb.velocity.magnitude < umbralVelocidad) { if (Time.time > nextFire) { nextFire = Time.time + fireRate; //dificil _anim.SetBool("Idle", true); _anim.SetTrigger("AttackP"); if (direccion == 1) { Instantiate(portal, _firePointP.position + new Vector3(0.2f, 0, 0), Quaternion.identity); Instantiate(portaled, player.position + new Vector3(0.1f, 0.1f, 0), Quaternion.identity); } else if (direccion == -1) { Instantiate(portal, _firePointP.position + new Vector3(-0.2f, 0, 0), Quaternion.identity); Instantiate(portaled, player.position + new Vector3(-0.1f, 0.1f, 0), Quaternion.identity); } } _rb.velocity = new Vector2(0, _rb.velocity.y); if (player.position.x > transform.position.x) { direccion = 1; } if (player.position.x < transform.position.x) { direccion = -1; } if (distaciaConPlayer > zonaAtaque) { comportamiento = tipoDeComportamientoEnemy.persecucion; } } break; } }
private void Update() { distaciaConPlayer = Mathf.Abs(player.position.x - transform.position.x); transform.localScale = new Vector3(1 * direccion, 1, 1); StopCoroutine("ShootLaser"); anim.SetBool("RunO", true); switch (comportamiento) { case tipoDeComportamientoEnemy.pasivo: if (_rb.velocity.magnitude < umbralVelocidad) { _rb.velocity = new Vector2(speed * direccion, _rb.velocity.y); if (transform.position.x < limitLeft) { direccion = 1; } if (transform.position.x > limitRight) { direccion = -1; } if (distaciaConPlayer < entradaZonaPersecucion) { comportamiento = tipoDeComportamientoEnemy.persecucion; } } break; case tipoDeComportamientoEnemy.persecucion: if (_rb.velocity.magnitude < umbralVelocidad) { StopCoroutine("ShootLaser"); } { _rb.velocity = new Vector2(speed * 2f * direccion, _rb.velocity.y); if (player.position.x > transform.position.x) { direccion = 1; } if (player.position.x < transform.position.x) { direccion = -1; } if (distaciaConPlayer > salidaZonaPersecucion) { comportamiento = tipoDeComportamientoEnemy.pasivo; } if (distaciaConPlayer < zonaAtaque) { comportamiento = tipoDeComportamientoEnemy.ataque; } } break; case tipoDeComportamientoEnemy.ataque: if (_rb.velocity.magnitude < umbralVelocidad) { StartCoroutine("ShootLaser"); anim.SetTrigger("AttackL"); anim.SetBool("RunO", false); _rb.velocity = new Vector2(0, _rb.velocity.y); if (player.position.x > transform.position.x) { transform.eulerAngles = new Vector3(0, 0, 0); direccion = 1; } if (player.position.x < transform.position.x) { direccion = 1; transform.eulerAngles = new Vector3(0, 180, 0); } if (distaciaConPlayer > zonaAtaque) { comportamiento = tipoDeComportamientoEnemy.persecucion; StopCoroutine("ShootLaser"); line.enabled = false; StopCoroutine("ShotEffect"); } } break; } }