// Update is called once per frame void Update() { switch (states) { case States.idle: { transform.position = Vector2.MoveTowards(transform.position, dir, Time.deltaTime * speed); break; } case States.fight: { Vector3 lookDir = player.position - enemyGun.transform.position; float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f; if (angle < -180 || angle > 0) { gunSprite.transform.localEulerAngles = new Vector3(0, 180, 90); sprite.flipX = false; } else { sprite.flipX = true; gunSprite.transform.localEulerAngles = new Vector3(0, 0, 90); } enemyGun.transform.rotation = Quaternion.Lerp(enemyGun.transform.rotation, Quaternion.Euler(Vector3.forward * angle), Time.deltaTime * lerpSpeed); enemyGun.CheckCooldown(); break; } } }
private IEnumerator Minigun() { gun.enabled = true; while (timer < 7.5f) { gun.CheckCooldown(); timer += Time.deltaTime; toLerp = Color.Lerp(toLerp, Color.red, Time.deltaTime * 0.2f); Vector3 lookDir = player.position - gun.transform.position; float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f; gun.transform.rotation = Quaternion.Lerp(gun.transform.rotation, Quaternion.Euler(Vector3.forward * angle), Time.deltaTime * gunLerpSpeed); yield return(null); } temp_gameObject = Instantiate(smoke, gun.transform.position - Vector3.forward * 3, Quaternion.identity); gun.enabled = false; phase = Phase.GoCrazy; timer = 0; StartCoroutine(Tired()); }