Exemple #1
0
    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;
    }
Exemple #2
0
 public Projectile SpawnProjectile()
 {
     if (!CanFire)
     {
         return(null);
     }
     if (clip && audioSource)
     {
         audioSource.PlayOneShot(clip, volume);
     }
     cooldown.Begin(this);
     return(Instantiate(projectile, SpawnPoint, Quaternion.identity));
 }
Exemple #3
0
    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;
    }
Exemple #4
0
 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);
     }
 }
Exemple #5
0
    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);
        }
    }
Exemple #6
0
    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;
    }