Как одновременно использовать несколько эффектов в Cinemachine?

Как установить эффект покачивания как стандартный для Cinemachine камеры, чтобы затем можно было переключаться на эффект "шейк" с помощью скрипта?
  • 13 июня 2024 г. 10:41
Ответы на вопрос 2
Для одновременного использования нескольких эффектов в Cinemachine можно просто добавить их в компоненты Cinemachine Virtual Camera. Например, если вы хотите использовать эффект покачивания и эффект шума, просто добавьте оба эффекта в список компонентов Cinemachine Virtual Camera.

Чтобы установить эффект покачивания как стандартный для Cinemachine камеры, вам нужно открыть компонент Cinemachine Virtual Camera и выбрать вкладку "Noise" (Шум). Здесь вы можете настроить параметры эффекта покачивания.

Затем, чтобы переключаться на эффект "шейк" с помощью скрипта, вам нужно создать скрипт, который будет управлять компонентом Cinemachine Virtual Camera.

Пример кода:

```c#
using UnityEngine;
using Cinemachine;

public class CameraShake : MonoBehaviour
{
    public CinemachineVirtualCamera virtualCamera;
    private CinemachineBasicMultiChannelPerlin noise;

    private void Start()
    {
        noise = virtualCamera.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
    }

    public void ShakeCamera(float amplitude, float frequency)
    {
        noise.m_AmplitudeGain = amplitude;
        noise.m_FrequencyGain = frequency;
    }
}
```

Затем в другом скрипте или событии вы можете вызвать метод ShakeCamera и передать значения амплитуды и частоты для эффекта "шейк":

```c#
CameraShake cameraShake = GetComponent<CameraShake>();
cameraShake.ShakeCamera(1.0f, 1.0f);
```

Таким образом, вы сможете установить эффект покачивания как стандартный для Cinemachine камеры и переключаться на эффект "шейк" при необходимости с помощью скрипта.
using UnityEngine;
using Cinemachine;

public class CameraShaker : MonoBehaviour {

    public CinemachineVirtualCamera _vCam;

    private CinemachineBasicMultiChannelPerlin _vCamNoise;

    void Start()
    {
        if (_vCam != null)
            _vCamNoise = _vCam.GetCinemachineComponent<Cinemachine.CinemachineBasicMultiChannelPerlin>();
    }

    void Update()
    {
       // _isShake = Input.GetKey(KeyCode.Space);

        if (Input.GetKey(KeyCode.Space))
        {
            _vCamNoise.m_AmplitudeGain = 2f;
            _vCamNoise.m_FrequencyGain = 1.2f;
        }
        else
        {
            _vCamNoise.m_AmplitudeGain = 0f;   
        }
    }
}


ну соответственно m_AmplitudeGain и m_FrequencyGain это из инспектора

А все это переключать ну правильный вариант это сделать машину состояний с различными параметрами.
Вариант попроще просто через свич
Похожие вопросы