はじめに
今回はスクリプトで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周りのパラメータの詳細はこちらを参照してください