using System.Collections; using System.Collections.Generic; using UnityEngine; using Cinemachine; public class CameraVR : MonoBehaviour { private CinemachineVirtualCamera _cinemachineVirtualCamera; private CinemachineBasicMultiChannelPerlin _multiChannelPerlin; //当前持续时间 private float _shakeTime; //总时间 private float _shakeTimeTotal; //强度 private float _shakeIntensity; private void Awake() { _cinemachineVirtualCamera = GetComponent(); _multiChannelPerlin = _cinemachineVirtualCamera.GetCinemachineComponent(); } // Update is called once per frame void Update() { if (_shakeTime > 0) { _shakeTime -= Time.deltaTime; _multiChannelPerlin.m_AmplitudeGain = Mathf.Lerp(0, _shakeIntensity, _shakeTime / _shakeTimeTotal); } } /// /// 抖动 /// /// 抖动时间 /// 强度 public void ShakeCamera(float time, float intensity) { if (_cinemachineVirtualCamera != null) { _shakeTimeTotal = time; _shakeIntensity = intensity; _shakeTime = _shakeTimeTotal; _multiChannelPerlin.m_AmplitudeGain = _shakeIntensity; } } private void OnDrawGizmos() { Ray ray = new Ray(transform.position, transform.forward); Gizmos.color = Color.blue; Gizmos.DrawRay(ray); } }