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); }
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(); } }
private void ResetKickback() { _character.ArmsInformation.ArmsHolder.localPosition = new Vector3(0, 0, 0); _kickTimer.Stop(); _kickbackState = KickBackState.Idle; }