Exemplo n.º 1
0
    public override _Weapon3.enWaponState excute(_Shoot3 shoot, _Weapon3 wapon, _Weapon3.TriggerUnit trigger)
    {
        if (shoot.isScopeable & trigger.press)
        {
            wapon.sound.PlayOneShot(zoomSound);


            if (isScopeMode)
            {
                zoomOff(shoot);
            }
            else
            {
                zoomOn(shoot);
            }


            return(_Weapon3.enWaponState.excuting);
        }
        else
        {
            var progress = wapon.reloadRemainingTime * wapon.maxReloadTimeR;

            if (progress == 1.0f)
            {
                zoomOff(shoot);
            }


            return(_Weapon3.enWaponState.ready);
        }
    }
Exemplo n.º 2
0
    protected override void fire(_Shoot3 shoot, _Weapon3 wapon)
    {
        var pos = wapon.tfMuzzle.position;

        var rot = wapon.tfMuzzle.rotation;

        var tfMuzzle = wapon.tf.childCount > 0 ? wapon.tf.GetChild(0) : wapon.tfMuzzle;


        for (var i = 0; i < numberOfBullets; i++)
        {
            Random.seed = i;

            var noiseAngle = Random.insideUnitCircle * lowAccuracy;

            var rotNoize = Quaternion.Euler(-emitAngle + noiseAngle.x, noiseAngle.y, 0.0f);


            bullet.emit(pos, rot * rotNoize, barralFactor, 1.0f, 0, shoot.act, tfMuzzle);
        }


        sound.Play();

        if (flash != null)
        {
            flash.Emit(1);
        }
    }
Exemplo n.º 3
0
    public override _Weapon3.enWaponState excute(_Shoot3 shoot, _Weapon3 wapon, _Weapon3.TriggerUnit trigger)
    {
        if (wapon.reloadRemainingTime > 0.0f)
        {
            return(_Weapon3.enWaponState.reloading);
        }
        else
        {
            if (bulletRemaining == 0)
            {
                bulletRemaining = maxBullets;
            }


            var state = base.excute(shoot, wapon, trigger);


            if ((state & _Weapon3.enWaponState.enterReload) != 0)
            {
                if (wapon.reloadRemainingTime == 0.0f)
                {
                    wapon.maxReloadTimeR = 1.0f / reloadTime;
                }

                wapon.reloadRemainingTime += reloadTime;
            }


            return(state);
        }
    }
Exemplo n.º 4
0
    void zoomOff(_Shoot3 shoot)
    {
        if (isScopeMode)
        {
            shoot.act.zooming(1.0f, false);


            isScopeMode = false;

            shoot.available += ShootOpenFlag.reload;            // 別の要因でリロード不可にできる場合はコード修正いるな、その要因フラグもみるとか
        }
    }
Exemplo n.º 5
0
    void zoomOn(_Shoot3 shoot)
    {
        if (!isScopeMode)
        {
            shoot.act.zooming(zoomRatioR, true);


            isScopeMode = true;

            shoot.available -= ShootOpenFlag.reload;
        }
    }
Exemplo n.º 6
0
    public virtual bool excute(_Shoot3 shoot, int subId, TriggerUnit trigger)
    {
        reload(shoot);


        // リロードの必要ないユニットの場合もあるので、リロード中でも一応通す。

        var statesMain = units.Length > subId ? units[subId].excute(shoot, this, trigger): enWaponState.ready;


        var isExcuting = ((int)statesMain & (int)enWaponState.excuting) != 0;

        return(isExcuting);
    }
Exemplo n.º 7
0
    // リロード --------------------------------------------------------

    public bool reload(_Shoot3 shoot)
    {
        if (shoot.isReloadable & isReloading)
        {
            reloadRemainingTime -= GM.t.delta;

            if (reloadRemainingTime < 0.0f)
            {
                reloadRemainingTime = 0.0f;
            }
        }

        return(isReloading);
    }
Exemplo n.º 8
0
    public override _Weapon3.enWaponState excute(_Shoot3 shoot, _Weapon3 wapon, _Weapon3.TriggerUnit trigger)
    {
        if (!shoot.isShootable)
        {
            trigger = new _Weapon3.TriggerUnit();
        }



        if (Time.time > fireReadyTime)
        {
            /*if( wapon.reloadRemainingTime > 0.0f )
             * {
             *
             *      return _Wapon3.enWaponState.reloading;
             *
             * }
             * else */if (triggerRagTime > 0.0f && trigger.press)
            {
                fireReadyTime = Time.time + triggerRagTime;
            }
            else if (trigger.push)
            {
                fire(shoot, wapon);


                if (--bulletRemaining > 0)
                {
                    fireReadyTime = Time.time + nextFireTime;                    // - ( Time.time - fireReadyTime );


                    return(_Weapon3.enWaponState.excuting);
                }
                else
                {
                    fireReadyTime = 0.0f;


                    return(_Weapon3.enWaponState.enterReload | _Weapon3.enWaponState.excuting);
                }
            }
            else
            {
                return(_Weapon3.enWaponState.ready);
            }
        }


        return(_Weapon3.enWaponState.busy);
    }
Exemplo n.º 9
0
    // 実行 --------------------------------------------------------

    public virtual bool excute(_Shoot3 shoot, TriggerUnit mainTrigger, TriggerUnit subTrigger)
    {
        reload(shoot);


        // リロードの必要ないユニットの場合もあるので、リロード中でも一応通す。

        var statesMain = units.Length > 0 ? units[0].excute(shoot, this, mainTrigger): enWaponState.ready;

        var statesSub = units.Length > 1 ? units[1].excute(shoot, this, subTrigger) : enWaponState.ready;


        var isExcuting = (((int)statesMain | (int)statesSub) & (int)enWaponState.excuting) != 0;

        return(isExcuting);
    }
Exemplo n.º 10
0
    protected virtual void fire(_Shoot3 shoot, _Weapon3 wapon)
    {
        var noiseAngle = Random.insideUnitCircle * lowAccuracy;

        var pos = wapon.tfMuzzle.position;

        var rot = wapon.tfMuzzle.rotation * Quaternion.Euler(-emitAngle + noiseAngle.x, noiseAngle.y, 0.0f);

        bullet.emit(pos, rot, barralFactor, 1.0f, 0, shoot.act, wapon.tf.childCount > 0 ? wapon.tf.GetChild(0) : wapon.tfMuzzle);

        sound.Play();

        if (flash != null)
        {
            flash.Emit(1);
        }
    }
Exemplo n.º 11
0
        public void releaseBackToChildren(_Shoot3 s)
        {
            var tf = s.transform;

            var pshoot = s as _PlayerShoot3;

            foreach (var w in weapons)
            {
                if (pshoot)
                {
                    w.unequip(pshoot);
                }

                w.GetComponent <Renderer>().enabled = false;

                w.tf.parent = tf;
            }

            weapons = null;
        }
Exemplo n.º 12
0
 public override void leave(_Shoot3 shoot, _Weapon3 wapon)
 {
     zoomOff(shoot);
 }
Exemplo n.º 13
0
    public override void ready(_Shoot3 shoot, _Weapon3 wapon)
    {
        var readyTime = Time.time + wapon.readyTime;

        fireReadyTime = readyTime > fireReadyTime ? readyTime : fireReadyTime;
    }
Exemplo n.º 14
0
 public virtual void leave(_Shoot3 shoot, _Weapon3 wapon)
 {
 }
Exemplo n.º 15
0
 public virtual void ready(_Shoot3 shoot, _Weapon3 wapon)
 {
 }
Exemplo n.º 16
0
 public abstract _Weapon3.enWaponState excute(_Shoot3 shoot, _Weapon3 wapon, _Weapon3.TriggerUnit trigger);