public void SetShakeCurve(ShakeStyle curveStyle) { AnimationCurve GetStyle(ShakeStyle style) => style switch { ShakeStyle.WaterFall => _ShakeCurve_WaterFall, ShakeStyle.Cliff => _ShakeCurve_Cliff, ShakeStyle.Rise => _ShakeCurve_Rise, _ => null }; _CrntShakeCurve = GetStyle(curveStyle); }
public void setShake(float freq, float time, float amnt, ShakeStyle shaketype, bool restart = true) { frequency = freq; maxTime = time; magnitude = amnt; shakestyle = shaketype; if (restart) { timer = 0; } }
public void CameraShake(float time, float force, ShakeStyle style = ShakeStyle.WaterFall) { float forcePerFrame = force; float ratio = 1f - Mathf.Min(_RestShakeTime / _ShakeTime, 1f); if (_CrntShakeCurve == null) { _ShakeForcePerFrame = forcePerFrame; _RestShakeTime = _ShakeTime = time; SetShakeCurve(style); return; } if (forcePerFrame > _ShakeForcePerFrame * _CrntShakeCurve.Evaluate(ratio)) { _ShakeForcePerFrame = forcePerFrame; _RestShakeTime = _ShakeTime = time; SetShakeCurve(style); } else { _ShakeForcePerFrame += forcePerFrame; } }