Example #1
0
        public override void Shoot(Transform barrel, Weapon2DPreset weaponPreset, BulletPoolInstance bulletPool)
        {
            Quaternion bulletRot = Quaternion.Euler(0, 0, barrel.rotation.eulerAngles.z + Random.Range(-weaponPreset.spread / 2, weaponPreset.spread / 2));

            if (barrel.gameObject.activeSelf)
            {
                GameObject bullet = bulletPool.SpawnObjectAt(barrel, bulletRot);
                if (bullet.GetComponent <Projectile2D>() != null)
                {
                    float variation1 = 1;
                    float variation2 = 1;
                    if (weaponPreset.speedVariation)
                    {
                        variation1 = 1 - weaponPreset.variationAmount;
                        variation2 = 1 + weaponPreset.variationAmount;
                    }
                    float randSpeed = (weaponPreset.speedVariation) ? Random.Range(weaponPreset.projectileSpeed * variation1, weaponPreset.projectileSpeed * variation2) : weaponPreset.projectileSpeed;
                    bullet.GetComponent <Projectile2D>().bulletSpeed = randSpeed;
                }
                else
                {
                    Debug.LogError("Instantiated bullet doesn't have BasicProjectile2D.cs component or something that derives from it!");
                }
            }
        }
Example #2
0
        public void InitWeaponPreset(Weapon2DPreset preset, bool isNewWeapon = false)
        {
            if (heldWeapons.ContainsKey(preset.name))
            {
                if (!isNewWeapon)
                {
                    weaponPreset = heldWeapons[preset.name];
                }
                else
                {
                    heldWeapons[preset.name] = preset.Copy();
                    weaponPreset             = heldWeapons[preset.name];
                }
            }
            else
            {
                heldWeapons.Add(preset.name, preset.Copy());
                weaponPreset = heldWeapons[preset.name];
            }



            switch (weaponPreset.shootMode)
            {
            case Mode.normal:
                shootMode = (ShootMode)ScriptableObject.CreateInstance("NormalShoot");
                break;

            case Mode.arcShot:
                shootMode = (ShootMode)ScriptableObject.CreateInstance("ArcShootMode");
                break;

            default:
                shootMode = (ShootMode)ScriptableObject.CreateInstance("ArcShootMode");
                break;
            }
            if (weaponPreset.weaponAmmo == null)
            {
                weaponPreset.weaponAmmo = new WeaponAmmo(weaponPreset.clipSize, weaponPreset.startingAmmo);
            }
            cooldownCheckValue = weaponPreset.cooldown;
            cooldownTimer      = new Cooldown(d: weaponPreset.cooldown);
            gameObject.name    = weaponPreset.weaponName;
            if (bulletPool != null)
            {
                bulletPool.DestructionSequence();
            }

            bulletPool = new BulletPoolInstance(weaponPreset.bulletPrefab, 0, this, weaponPreset.weaponName);
        }
Example #3
0
 public abstract void Shoot(Transform barrel, Weapon2DPreset weaponPreset, BulletPoolInstance bulletPool);