/// <summary> /// Constantly shakes the camera until it's explicitly told to stop /// </summary> /// <param name="preset">The preset that contains all the constant shake parameters</param> public void ConstantShake(ConstantShakePreset preset) { if (CurrentConstantShakePreset != null) { StopConstantShaking(0); } CurrentConstantShakePreset = preset; _isConstantShaking = true; _constantShakePositions = new Vector3[preset.Layers.Count]; for (int i = 0; i < preset.Layers.Count; i++) { StartCoroutine(CalculateConstantShakePosition( i, preset.Layers[i].Frequency.x, preset.Layers[i].Frequency.y, preset.Layers[i].AmplitudeHorizontal, preset.Layers[i].AmplitudeVertical, preset.Layers[i].AmplitudeDepth)); } StartCoroutine(ConstantShakeRoutine(preset.Intensity)); }
/// <summary> /// Stops constant shakes /// </summary> /// <param name="duration">How long it takes to stop the constant shake</param> public void StopConstantShaking(float duration = .3f) { CurrentConstantShakePreset = null; _isConstantShaking = false; if (duration > 0f) { StartCoroutine(StopConstantShakeRoutine(duration)); } else { StopAllCoroutines(); _constantShakePosition = Vector3.zero; _influences.Clear(); _influences.Add(_constantShakePosition); } }
void OnEnable() { _preset = (ConstantShakePreset)target; }