Пример #1
0
    private void DoFireWeapon()
    {
        if (Time.fixedTime > lastShot + fireDelay + actualFireDelayVariant)
        {
            //if the weapon has auto mode or if they had previously stopped shooting
            if (autoFire || stoppedShooting)
            {

                for (int i = 0; i < bulletsPerShot; i++)
                {
                    remoteProjectile = (RemoteProjectile)Fire();
                }

                if (soundEffectHandler != null)
                {
                    soundEffectHandler.PlayEffect();
                }

                shooter.AddRelativeForce(shooterForce);

                if (particleSystem != null)
                {
                    particleSystem.Emit(Random.Range((int)minMaxParticles.x, (int)minMaxParticles.y + 1));
                }

                if (cameraShaker != null)
                {
                    cameraShaker.Shake();
                }

                lastShot = Time.fixedTime;
                if (varyFireDelay && fireDelayVariantRange > 0.0f)
                {
                    actualFireDelayVariant = Random.Range(0.0f, fireDelayVariantRange);
                }
            }
        }
    }
Пример #2
0
    public override void FixedUpdate()
    {
        if (doShoot)
        {
            if (remoteProjectile == null)
            {
                DoFireWeapon();
            }
            else
            {
                if (stoppedShooting) {
                    remoteProjectile.RemoteActivate();
                    remoteProjectile = null;

                    if (refireOnManualActivation)
                    {
                        DoFireWeapon();
                    }
                    //GameObject.Destroy(remoteProjectile.gameObject);
                    //remoteProjectile = null;
                }
            }

            stoppedShooting = false;
        }

        doShoot = false;

        //if (firing)
        //{
        //    if (hook == null)
        //    {
        //        if (Time.fixedTime > lastShot + fireDelay &&
        //            Time.fixedTime > lastDetach + detachDelay)
        //        {

        //            //determine bullets to fire
        //            //int bulletsToFire = (int)(bulletsPerSecond * Time.deltaTime);

        //            //if (bulletsToFire == 0) bulletsToFire = 1;

        //            Fire();

        //            shooter.AddRelativeForce(shooterForce);

        //            lastShot = Time.fixedTime;
        //            firing = false;
        //        }
        //        else
        //        {
        //            firing = false;
        //        }
        //    }
        //    else
        //    {
        //        if (Time.fixedTime > lastShot + detachDelay)
        //        {
        //            GameObject.Destroy(hook.gameObject);
        //            hook = null;
        //            lastDetach = Time.fixedTime;
        //        }
        //        else
        //        {
        //            firing = false;
        //        }
        //    }
        //}
    }