【Unity】スクリプトでCinemachineのカメラを揺らすときに揺らす時間を指定する

はじめに

今回はスクリプトでCinemachineのカメラを揺らすときに揺らす時間を指定する方法を消化します。

環境は Unity 2021.3.25f1です

Universal Render Pipeline を使用しています。

前準備

MainCameraにCinemachineImpulseSourceをアタッチします

VirtualCameraにCinemachine Impulse Listenerを追加します

スクリプト作成

揺らすパラメータは適当です。

時間関連はm_TimeEnvelopeに格納されています

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
public class TestCamera : MonoBehaviour
{
    public CinemachineImpulseSource Source;//何かしらの方法で設定
    private void Start()
    {

    }

    private void Update()
    {
        if(Input.GetKeyDown(KeyCode.R))
        {
           Shake(New Vector3(0, 10, 10),0.2f,0.2f);
        }
    }

    /// <summary>
        /// カメラを揺らす
        /// </summary>
        /// <param name="dire"></param>
        /// <param name="decelerationTime"></param>
        /// <param name="maxTime"></param>
        public void Shake(Vector3 dire, float decelerationTime,float maxTime)
        {
            Source.m_ImpulseDefinition.m_TimeEnvelope.m_AttackTime = maxTime;
            Source.m_ImpulseDefinition.m_TimeEnvelope.m_DecayTime = decelerationTime;
            Source.GenerateImpulse(dire);
        }

Time周りのパラメータの詳細はこちらを参照してください

docs.unity.cn