internal void TryShoot() { if (CanShoot()) { CooldownUntilNextShot = ShootDelay; Projectile newProjectile = (Projectile)ProjectileBlueprint.Clone(); // add an (additive) error to the shot angle var rng = new Random(); float spreadError = (float)rng.NextDouble() * SpreadAngle * (rng.NextBoolean() ? 1 : -1); newProjectile.SetRotation(MyPart.TotalRotation + spreadError, updateDxDy:false); newProjectile.SetVelocity(newProjectile.Velocity + AircraftVelocityBoost()); newProjectile.Position = MyPart.PositionWorldspace; newProjectile.MyTeam = MyPart.Aircraft.Team; ((PlayLayer)MyPart.Layer).AddProjectile(newProjectile); } }
public ProjectileSlot(ProjectileBlueprint projectile, Transform spawnPoint) { _projectile = projectile; _spawnPoint = spawnPoint; }