private IEnumerator BlinkCoroutine(float dur = .1f, bool forwards = true) { if (blinkCD.IsDecrementing) { yield break; } mesh.enabled = false; var forwardsInt = forwards ? 1 : 0; transform.position = transform.position + transform.forward * (blinkDistance * forwardsInt); yield return(new WaitForSeconds(dur)); mesh.enabled = true; blinkCD.Begin(this); blinkCR = null; }
public Projectile SpawnProjectile() { if (!CanFire) { return(null); } if (clip && audioSource) { audioSource.PlayOneShot(clip, volume); } cooldown.Begin(this); return(Instantiate(projectile, SpawnPoint, Quaternion.identity)); }
private IEnumerator BlinkCoroutine(float dur = .1f, bool forwards = true) { if (blinkCD.isDecrementing) { yield break; } //ship.ShipBase.shipMesh.enabled = false; ship.ShipBase.gameObject.SetActive(false); // Make mesh invisible and disable colliders yield return(new WaitForSeconds(dur)); // reenable mesh/colliders //ship.ShipBase.shipMesh.enabled = true; ship.ShipBase.gameObject.SetActive(true); var forwardsInt = forwards ? 1 : 0; transform.position = transform.position + transform.forward * (blinkDistance * forwardsInt); blinkCD.Begin(this); blinkCR = null; }
void FixedUpdate() { if (Burning && !ignoreDrain) { charge -= stats.drainRate; if (charge <= 0) { outOfEnergyCooldown.Begin(this); Deactivate(); } } else if (!outOfEnergyCooldown.IsDecrementing) { charge = Mathf.MoveTowards(charge, 100, stats.regenRate); } }
public void FireWeaponHardpoint(Gun gun, AimPosition aim) { if (CanFireWeapons == false || gun.stats == null) { return; } if (gun.stats.energyDraw < energy && gun.Fire(aim, ship.colliders.ToArray())) { energy -= gun.stats.energyDraw; if (WeaponFired != null) { WeaponFired(gun); } energyCooldown.Begin(this); } }
private IEnumerator SidestepRoutine(Vector3 baseForce, ForceMode mode) { float elapsed = 0; // something like this if (meshTransform) { meshTransform.Rotate(0, 0, sidestepDur / 360, Space.Self); } while (elapsed < sidestepDur) { rb.AddRelativeForce(baseForce * (elapsed / sidestepDur), mode); elapsed += Time.deltaTime; yield return(new WaitForFixedUpdate()); } sidestepCD.Begin(this); sidestepCR = null; }