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(); } }
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(); } } }
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); }
public void ClearHardpoint() { if (loadedMissile != null) { Destroy(loadedMissile.gameObject); loadedMissile = null; } cooldown = 0.0f; }
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); }
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); }
// 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); }
// 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); }