static Vector3 GetCombinedFilterResults( NoiseSettings.TransformNoiseParams[] noiseParams, float time, Vector3 noiseOffsets) { float xPos = 0f; float yPos = 0f; float zPos = 0f; if (noiseParams != null) { for (int i = 0; i < noiseParams.Length; ++i) { NoiseSettings.TransformNoiseParams param = noiseParams[i]; Vector3 timeVal = new Vector3(param.X.Frequency, param.Y.Frequency, param.Z.Frequency) * time; timeVal += noiseOffsets; Vector3 noise = new Vector3( Mathf.PerlinNoise(timeVal.x, 0f) - 0.5f, Mathf.PerlinNoise(timeVal.y, 0f) - 0.5f, Mathf.PerlinNoise(timeVal.z, 0f) - 0.5f); xPos += noise.x * param.X.Amplitude; yPos += noise.y * param.Y.Amplitude; zPos += noise.z * param.Z.Amplitude; } } return(new Vector3(xPos, yPos, zPos)); }
/// <summary> /// Shakes the camera until the duration time has passed /// </summary> private void Shake() { if (this.shakeTimer > 0) { this.shakeTimer -= Time.deltaTime; if (this.shakeTimer <= 0) { this.shakeTimer = 0f; this.ResetShake(); } else { this.virtualCameraNoise.m_AmplitudeGain = 1f; this.virtualCameraNoise.m_FrequencyGain = 1f; Cinemachine.NoiseSettings.TransformNoiseParams transformNoiseParams = new NoiseSettings.TransformNoiseParams(); transformNoiseParams.X = new NoiseSettings.NoiseParams(); transformNoiseParams.X.Frequency = Mathf.Lerp(0f, this.Model.frequency, this.shakeTimer / this.Model.duration); transformNoiseParams.X.Amplitude = Mathf.Lerp(0f, this.Model.amplitude, this.shakeTimer / this.Model.duration); transformNoiseParams.Y = new NoiseSettings.NoiseParams(); transformNoiseParams.Y.Frequency = Mathf.Lerp(0f, this.Model.frequency, this.shakeTimer / this.Model.duration); transformNoiseParams.Y.Amplitude = Mathf.Lerp(0f, this.Model.amplitude, this.shakeTimer / this.Model.duration); this.Model.NoiseSettings.OrientationNoise = new Cinemachine.NoiseSettings.TransformNoiseParams[] { transformNoiseParams }; this.virtualCameraNoise.m_NoiseProfile = this.Model.NoiseSettings; } } }