Files
gold_dolphin/unity/Assets/Script/GameObject/Other/CameraVR.cs
2026-06-20 19:35:25 +08:00

64 lines
1.5 KiB
C#

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<CinemachineVirtualCamera>();
_multiChannelPerlin = _cinemachineVirtualCamera.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
}
// Update is called once per frame
void Update()
{
if (_shakeTime > 0)
{
_shakeTime -= Time.deltaTime;
_multiChannelPerlin.m_AmplitudeGain = Mathf.Lerp(0, _shakeIntensity, _shakeTime / _shakeTimeTotal);
}
}
/// <summary>
/// 抖动
/// </summary>
/// <param name="Time">抖动时间</param>
/// <param name="Intensity">强度</param>
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);
}
}