Пример #1
0
        public void SelectWeapon(IWeaponInteractor weapon)
        {
            SwitchingSelectedWeaponEvent?.Invoke();

            weapon.SetAsCurrentWeapon();

            SelectedWeaponSwitchedEvent?.Invoke();
        }
        private IEnumerator FireGun(IWeaponInteractor interactor, ObjectPoolMono <Projectile> pool)
        {
            interactor.InitializeWeapon();
            while (true)
            {
                var projectile = pool.GetFreeElement();
                projectile.gameObject.transform.position = this.firePoint.transform.position;
                projectile.gameObject.GetComponent <Rigidbody>().velocity = Vector3.up * interactor.Velocity;

                projectile.damageOnHit = interactor.DamageOnHit;

                projectile.gameObject.layer = LayerMask.NameToLayer("PlayerProjectile");
                yield return(new WaitForSeconds(1 / interactor.FireRate));
            }
        }
        public void OpenFire(IWeaponInteractor interactor, ObjectPoolMono <Projectile> kinematicPool, ObjectPoolMono <Projectile> blasterPool)
        {
            Debug.Log($"Opening fire with {interactor.WeaponType}");
            switch (interactor.WeaponType)
            {
            case WeaponType.Kinematic:
                this.StartCoroutine(FireGun(interactor, kinematicPool));
                break;

            case WeaponType.Blaster:
                this.StartCoroutine(FireGun(interactor, blasterPool));
                break;

            case WeaponType.Laser:
                this.laser.SetActive(true);
                break;

            default:
                Debug.LogError("No weapon selected");
                break;
            }
        }