private void Move() { Vector2 movement = Vector2.down; _charge = GetComponentInChildren <BulletCharge>(true); bool distanceCheck = _player == null || Vector2.Distance(_player.transform.position, transform.position) > 2; bool chargeCheck = _charge == null || !_charge.gameObject.activeSelf; if (_canStrafe && distanceCheck && chargeCheck) { int roll = Random.Range(1, 100); if (roll < 50) { if (roll <= 25 && transform.position.x > Mover.MinColumn) { movement += Vector2.left; } else if (roll > 25 && transform.position.x < Mover.MaxColumn) { movement += Vector2.right; } } } _lastMoveTurn = TurnManager.Instance.TurnCount.Value; _mover.Move(movement); }
public static IEnumerator SpawnBullets(int number, GameObject prefab, GameObject shooter) { BulletCharge charge = shooter.GetComponentInChildren <BulletCharge>(); if (charge != null) { charge.gameObject.SetActive(false); } for (int i = 0; i < number; i++) { Bullet bullet = Instantiate(prefab).GetComponent <Bullet>(); bullet.transform.position = shooter.transform.position; bullet.Direction = !shooter.CompareTag("Player") ? Vector3.down : Vector3.up; bullet.Emitter = shooter; yield return(new WaitForSeconds(0.08f)); } }
private void Awake() { _bulletCharge = GetComponentInChildren <BulletCharge>(true); }