// Update is called once per frame void Update() { if (shakePos) { Vector3 pos = originalPosition; for (int i = 0; i < positionShakes.Length; i++) { ShakeParams param = positionShakes[i]; Vector3 phase = positionPhases[i]; pos += new Vector3( Mathf.Sin(Time.time * Mathf.PI * 2 * param.frequency + phase.x) * param.amplitude, Mathf.Sin(Time.time * Mathf.PI * 2 * param.frequency + phase.y) * param.amplitude, Mathf.Sin(Time.time * Mathf.PI * 2 * param.frequency + phase.z) * param.amplitude ); } transform.localPosition = pos; } if (shakeRot) { Vector3 rot = originalRotation; for (int i = 0; i < rotationShakes.Length; i++) { ShakeParams param = rotationShakes[i]; Vector3 phase = rotationPhases[i]; rot += new Vector3( Mathf.Sin(Time.time * Mathf.PI * 2 * param.frequency + phase.x) * param.amplitude, Mathf.Sin(Time.time * Mathf.PI * 2 * param.frequency + phase.y) * param.amplitude, Mathf.Sin(Time.time * Mathf.PI * 2 * param.frequency + phase.z) * param.amplitude ); } transform.localRotation = Quaternion.Euler(rot); } }
public void Shake(float intensity, float decay, float speed) { shake = new ShakeParams() { Amp = intensity, Phase = 0f, Decay = decay, Speed = speed }; }
public void GenerateShake(int power, int flickCoint, int flickDuration) { if (shakeTask.Initialized && !shakeTask.Completed) { shakeTask = new ShakeParams(shakeTask.Power + power, flickCoint, flickDuration); } else { offsetChangeTask = new OffsetChangeParams(_internalOffset, GenerateOffset(power), flickDuration); shakeTask = new ShakeParams(power, flickCoint, flickDuration); } }
public Coroutine Shake(ShakeParams shake_params) { return(Shake(shake_params.duration, shake_params.intensity, shake_params.speed)); }
public CamShakeParams(float duration, float intensity, float speed, int freeze_frames) { shake_params = new ShakeParams(duration, intensity, speed); this.freeze_frames = freeze_frames; }
public CamShakeParams() { shake_params = new ShakeParams(0, 0, 0); }