void ShootInDirection(Vector3 direction) { for (int i = 0; i < bulletOrigins.Length; i++) { Vector3 randomOffset = Random.insideUnitSphere * weaponSpread; Vector3 flattenedOffset = Vector3.Scale(randomOffset, bulletDirectionScale); bulletPool.NewBullet(bulletOrigins[i].transform.position, direction + flattenedOffset); } }
void Update() { if (Time.timeScale > 0f) { if (Input.GetKeyDown(KeyCode.M)) { useFastBullets = !useFastBullets; //TODO remove this. its just for testing } if (Input.GetKeyDown(KeyCode.N)) { useIncreasedFireRate = !useIncreasedFireRate; } if (playerInput.GetFireInput()) { if (Time.time > nextShot) { if (useFastBullets) { fastBulletPool.NewBullet(transform.position, GetBulletDirection()); } else { normalBulletPool.NewBullet(transform.position, GetBulletDirection()); } if (useIncreasedFireRate) { nextShot = Time.time + (1f / increasedFireRate); } else { nextShot = Time.time + (1f / normalFireRate); } } } if (playerInput.GetSpecialInputDown()) { if (!specialWeapon.IsEmpty()) { if (specialWeapon.CanFire()) { specialWeapon.Fire(); gui.SetSPWAmmoNumber(specialWeapon.GetAmmoCount()); gui.SetSPWDisplayState(false); } else { //TODO uisounds.playerrorsound() or something like that Debug.Log("wait"); } } else { //TODO uisounds.playerrorsound() or something like that Debug.Log("empty"); } } gui.SetSPWAmmoNumber(specialWeapon.GetAmmoCount()); gui.SetSPWDisplayState(specialWeapon.CanFire()); } }