예제 #1
0
        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);
        }
예제 #2
0
        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));
            }
        }
예제 #3
0
 private void Awake()
 {
     _bulletCharge = GetComponentInChildren <BulletCharge>(true);
 }