Пример #1
0
    private void KickbackUpdate()
    {
        if (_kickbackState == KickBackState.Idle)
        {
            return;
        }

        Transform arms = _character.ArmsInformation.ArmsHolder;

        if (_kickbackState == KickBackState.Kickback)
        {
            _kickZ = Mathf.Lerp(0, Data.Kick, _kickTimer.Elapsed / _kickTimer.Goal);
            if (_kickTimer.IsFinished == true)
            {
                _kickbackState = KickBackState.Reset;
                _kickTimer.Restart();
            }
        }
        else if (_kickbackState == KickBackState.Reset)
        {
            _kickZ = Mathf.Lerp(Data.Kick, 0, _kickTimer.Elapsed / _kickTimer.Goal);
            if (_kickTimer.IsFinished == true)
            {
                _kickbackState = KickBackState.Idle;
                _kickTimer.Stop();
            }
        }

        arms.localPosition = new Vector3(0, 0, -_kickZ);
    }
Пример #2
0
 public void Shoot()
 {
     if (CanShoot == true && IsShooting == false)
     {
         if (_character.IsAimingDownSight == true)
         {
             ShotCallback?.Invoke();
         }
         else
         {
             WeaponRecoil.ResetToIdle();
         }
         _recoilResetDelay.Stop();
         CurrentAmmo -= 1;
         HitScan();
         IsShooting = true;
         _shootDelay.Start();
         _kickbackState = KickBackState.Kickback;
         _kickTimer.Restart();
     }
     else if (CanShoot == false && CanReload == true)
     {
         Reload();
     }
 }
Пример #3
0
 private void ResetKickback()
 {
     _character.ArmsInformation.ArmsHolder.localPosition = new Vector3(0, 0, 0);
     _kickTimer.Stop();
     _kickbackState = KickBackState.Idle;
 }