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);
            }
            
        }
예제 #2
0
 public ProjectileSlot(ProjectileBlueprint projectile, Transform spawnPoint)
 {
     _projectile = projectile;
     _spawnPoint = spawnPoint;
 }