Ejemplo n.º 1
0
    private void Awake()
    {
        transform = GetComponent <Transform>();
        missile   = GetComponent <LauncherMissile>();

        if (fireClip != null)
        {
            fireSource                       = gameObject.AddComponent <AudioSource>();
            fireSource.clip                  = fireClip;
            fireSource.minDistance           = fireMinDistance;
            fireSource.maxDistance           = fireMaxDistance;
            fireSource.loop                  = false;
            fireSource.dopplerLevel          = 0.0f;
            fireSource.spatialBlend          = 1.0f;
            fireSource.volume                = fireVolume;
            fireSource.pitch                 = Random.Range(0.9f, 1.3f);
            fireSource.outputAudioMixerGroup = mixerGroup ?? null;
            fireSource.Stop();
        }

        if (loopClip != null)
        {
            loopSource                       = gameObject.AddComponent <AudioSource>();
            loopSource.clip                  = loopClip;
            loopSource.minDistance           = loopMinDistance;
            loopSource.maxDistance           = loopMaxDistance;
            loopSource.loop                  = true;
            loopSource.dopplerLevel          = 1.0f;
            loopSource.volume                = loopVolume;
            loopSource.spatialBlend          = 1.0f;
            loopSource.outputAudioMixerGroup = mixerGroup ?? null;
            loopSource.Stop();
        }
    }
Ejemplo n.º 2
0
    public override void Launch(Transform target, Vector3 velocity)    // Rakete abfeuern.
    {
        if (raketenAnzahl > 0 && nachladeCooldown <= 0.0f && magazinNachladeCooldown <= 0.0f)
        {
            if (fireSource != null)
            {
                fireSource.Play();
            }

            Vector3 abweichung = UnityEngine.Random.insideUnitCircle * (streuung * Mathf.Deg2Rad);
            abweichung = launchPoints[boxAnzahl].TransformDirection(abweichung);
            Vector3    randomizedForward  = launchPoints[boxAnzahl].forward + abweichung;
            Quaternion randomizedRotation = Quaternion.LookRotation(randomizedForward);

            LauncherMissile missile = ErzeugeRackete(launchPoints[boxAnzahl].position, randomizedRotation);
            missile.target = target;
            missile.Launch(target, velocity);
            nachladeCooldown = verzögerung;
            raketenAnzahl--;

            boxAnzahl++;
            if (boxAnzahl >= launchPoints.Count)
            {
                boxAnzahl = 0;
            }
            // Reload
            if (raketenAnzahl <= 0)
            {
                ReloadMagazine();
            }
        }
    }
Ejemplo n.º 3
0
    private LauncherMissile ErzeugeRackete(Vector3 position, Quaternion rotation)      // Erzeugt Missile und feuert diese ab.
    {
        LauncherMissile rakete = Instantiate(rocketPrefab) as LauncherMissile;

        rakete.spielerSchiff      = spielerSchiff;
        rakete.transform.position = position;
        rakete.transform.rotation = rotation;
        return(rakete);
    }
Ejemplo n.º 4
0
 public void ClearHardpoint()
 {
     if (loadedMissile != null)
     {
         Destroy(loadedMissile.gameObject);
         loadedMissile = null;
     }
     cooldown = 0.0f;
 }
Ejemplo n.º 5
0
        public RaketenSystem(float nachladen, LauncherMissile missilePrefab, Transform launchPoint, Transform spielerSchiff)
        {
            prefab             = missilePrefab;
            this.nachladen     = nachladen;
            this.launchPoint   = launchPoint;
            this.spielerSchiff = spielerSchiff;
            cooldown           = 0.0f;

            loadedMissile = CreateMissile(launchPoint);
        }
Ejemplo n.º 6
0
        public bool Launch(Transform target, Vector3 inheritedVelocity)
        {
            bool successfulLaunch = false;

            if (loadedMissile != null)
            {
                loadedMissile.Launch(target, inheritedVelocity);
                loadedMissile    = null;
                cooldown         = nachladen;
                successfulLaunch = true;
            }
            return(successfulLaunch);
        }
Ejemplo n.º 7
0
        // Automatically reloads missiles based on a cooldown.
        public bool Update(float deltaTime)
        {
            bool spawnedNewMissle = false;

            if (loadedMissile == null)
            {
                cooldown -= deltaTime;

                // Finished reloading, spawn new missile.
                if (cooldown <= 0.0f)
                {
                    loadedMissile    = CreateMissile(launchPoint);
                    spawnedNewMissle = true;
                }
            }

            return(spawnedNewMissle);
        }
Ejemplo n.º 8
0
        // Spawns a missile on a station.
        private LauncherMissile CreateMissile(Transform newParent)
        {
            LauncherMissile rakete = Instantiate(prefab, newParent);

            rakete.spielerSchiff = spielerSchiff;

            // Attach the missile to the hardpoint by its attach point if possible.
            if (rakete.attachPoint != null)
            {
                rakete.transform.localPosition    = -rakete.attachPoint.localPosition;
                rakete.transform.localEulerAngles = -rakete.attachPoint.localEulerAngles;
            }
            else
            {
                rakete.transform.localPosition    = Vector3.zero;
                rakete.transform.localEulerAngles = Vector3.zero;
            }

            return(rakete);
        }