private void fireAnyLaserGun(ProjectileBehaviourScript.BulletTypes LaserToFire) { if (cooldownTimeStamp <= Time.time) { if (Input.GetButtonDown("Fire1")) { pressedButtonDown = true; loadTimeStamp = Time.time + loadTime; isReady = true; } if (loadTimeStamp >= Time.time) { if (isReady == true) { Debug.Log("Loading"); } } if (loadTimeStamp <= Time.time) { if (isReady == true) { Instantiate(ObjectHolder._Effects[ObjectHolder.GetEffectIndex(EffectBehaviourScript.EffectTypes.LaserLoaded)], transform.position, transform.rotation, transform); isReady = false; } } if (pressedButtonDown == true) { if (Input.GetButtonUp("Fire1")) { if (loadTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(LaserToFire)], transform.position, transform.rotation, this.transform); loadTimeStamp = Time.time + loadTime; cooldownTimeStamp = Time.time + cooldown; //Apply cooldown when firered } else { loadTimeStamp = Time.time + loadTime; //no cooldown wehen reset Debug.Log("reset"); } isReady = false; pressedButtonDown = false; } } } }
void FireWeapon() { switch (currentWeapon) { case (Weapons.Standart_lvl_1): if (Input.GetButton("Fire1")) { cooldown = 0.3f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.BlasterShoot_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.Standart_lvl_2): if (Input.GetButton("Fire1")) { cooldown = 0.3f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.BlasterShoot_lvl_1)], ProjectileSpawnPoint + (TurretGameObject.transform.right * 0.1f), TurretGameObject.transform.rotation); Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.BlasterShoot_lvl_1)], ProjectileSpawnPoint + (TurretGameObject.transform.right * -0.1f), TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.Standart_lvl_3): if (Input.GetButton("Fire1")) { cooldown = 0.4f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.BlasterShoot_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.BlasterShoot_lvl_1)], ProjectileSpawnPoint + (TurretGameObject.transform.right * 0.2f), TurretGameObject.transform.rotation); Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.BlasterShoot_lvl_1)], ProjectileSpawnPoint + (TurretGameObject.transform.right * -0.2f), TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.Helix_lvl_1): if (Input.GetButton("Fire1")) { cooldown = 0.5f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.HelixBullet_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.Helix_lvl_2): if (Input.GetButton("Fire1")) { cooldown = 0.7f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.HelixBullet_lvl_2)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.Helix_lvl_3): if (Input.GetButton("Fire1")) { cooldown = 0.9f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.HelixBullet_lvl_3)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.Spread): if (Input.GetButton("Fire1")) { cooldown = 0.4f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.BlasterShoot_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.BlasterShoot_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation * Quaternion.Euler(0, 0, -10)); Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.BlasterShoot_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation * Quaternion.Euler(0, 0, 10)); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.Homing_lvl_1): if (Input.GetButton("Fire1")) { cooldown = 0.3f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { float BulletRng = 1f; Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.HomingBullet_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation * Quaternion.Euler(0, 0, Random.Range(BulletRng, -BulletRng))); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.Homing_lvl_2): if (Input.GetButton("Fire1")) { cooldown = 0.2f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { float BulletRng = 6f; Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.HomingBullet_lvl_2)], ProjectileSpawnPoint, TurretGameObject.transform.rotation * Quaternion.Euler(0, 0, Random.Range(BulletRng, -BulletRng))); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.Homing_lvl_3): if (Input.GetButton("Fire1")) { cooldown = 0.1f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { float BulletRng = 12f; Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.HomingBullet_lvl_3)], ProjectileSpawnPoint, TurretGameObject.transform.rotation * Quaternion.Euler(0, 0, Random.Range(BulletRng, -BulletRng))); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.LaserSword_lvl_1): if (Input.GetButton("Fire1")) { cooldown = 0.5f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { float fieldSize = 1.25f; Vector3 RndFieldPos = transform.position + (TurretGameObject.transform.right * Random.Range(-fieldSize, fieldSize)) + (TurretGameObject.transform.up * Random.Range(-fieldSize, -fieldSize / 2)); //new Vector3(Random.Range(-fieldSize, fieldSize), ; Quaternion LookToMouse = Quaternion.LookRotation(Vector3.forward, (new Vector3(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y, 0) - RndFieldPos)); Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.LaserSword_lvl_1)], RndFieldPos, LookToMouse); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.WaveEmitter_lvl_1): if (Input.GetButton("Fire1")) { cooldown = 0.3f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.WaveBullet_lvl_X)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.RocketLauncher_lvl_1): if (Input.GetButton("Fire1")) { cooldown = 0.8f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.Missile_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.GrenadeLauncher_lvl_1): if (Input.GetButton("Fire1")) { cooldown = 0.8f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.Grenade_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.ShrapnelLauncher_lvl_1): if (Input.GetButton("Fire1")) { cooldown = 0.8f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.Shrapnel_lvl_1)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.ShrapnelLauncher_lvl_2): if (Input.GetButton("Fire1")) { cooldown = 1.2f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.Shrapnel_lvl_2)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.ShrapnelLauncher_lvl_3): if (Input.GetButton("Fire1")) { cooldown = 1.4f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { Instantiate(Bullets[ObjectHolder.GetBulletIndex(ProjectileBehaviourScript.BulletTypes.Shrapnel_lvl_3)], ProjectileSpawnPoint, TurretGameObject.transform.rotation); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.ChainGun_lvl_1): if (Input.GetButton("Fire1")) { cooldown = 0.01f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { fireChainGun(0.04f, 0.1f, 6f); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.ChainGun_lvl_2): if (Input.GetButton("Fire1")) { cooldown = 0.01f * fireRateMultiplyer * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { fireChainGun(0.04f, 0.1f, 3f); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.ChainGun_lvl_3): if (Input.GetButton("Fire1")) { cooldown = 0.005f * fireRateMultiplyer; if (cooldownTimeStamp <= Time.time) { fireChainGun(0.04f, 0.1f, 1f); cooldownTimeStamp = Time.time + cooldown; } } break; case (Weapons.LaserGun): cooldown = 2f * fireRateMultiplyer; loadTime = 1f; if (cooldownTimeStamp <= Time.time) { if (Input.GetButtonDown("Fire1")) { pressedButtonDown = true; loadTimeStamp = Time.time + loadTime; isReady = true; } if (loadTimeStamp >= Time.time) { if (isReady == true) { Debug.Log("Loading"); } } if (loadTimeStamp <= Time.time) { if (isReady == true) { Instantiate(ObjectHolder._Effects[ObjectHolder.GetEffectIndex(EffectBehaviourScript.EffectTypes.LaserLoaded)], transform.position, transform.rotation, transform); isReady = false; } } } break; default: Debug.LogError("The Weapon Type -" + currentWeapon.ToString() + "- has no values assinged!"); break; } }
private void StartFiringSniper(Vector3 _ProjectileSpawnPoint, GameObject _TurretGameObject) { GameObject effect = Instantiate(ObjectHolder._Effects[ObjectHolder.GetEffectIndex(EffectBehaviourScript.EffectTypes.SniperCharging)], _ProjectileSpawnPoint, _TurretGameObject.transform.rotation, _TurretGameObject.transform); effect.GetComponent <EffectBehaviourScript>().StartCoroutine(FireSniper(effect)); }