Cinemachine Impulse Source
Cinemachine Impulse Source コンポーネントを使用すると、衝突でも Collider トリガーでもないイベントから Impulse を生成できます。これは、一群のGenerateImpulse()
APIメソッドにアクセス可能な Impulse Source です。これらのメソッドは、指定の位置に、指定の速度と強度によるインパルス (衝撃、刺激) を生成します。これらのメソッドは、ゲームロジックから直接呼び出すことも、UnityEvent を利用して使用することも可能です。
ヒント: カスタムのインパルス生成クラスを独自に作成する場合には、このコンポーネントのスクリプトをサンプルとして使用できます。
シーンへの Cinemachine Impulse Source の追加は、以下の手順で行えます。
カメラの振動をトリガーしたいゲームオブジェクトを選択し、そのインスペクター内で Add Component ボタンをクリックしてください。
メニューを Scripts > Cinemachine の順に進み Cinemachine Impulse Source を選択します。
デフォルトでは、Impulse Source は範囲内の全ての Impulse Listener に影響を与えるように設定されていますが、チャンネルによるフィルタリング を適用すれば、Impulse Source が一部の Impulse Listener のみに影響を与えるように設定することもできます。
プロパティー
Cinemachine Impulse Source のインスペクターウィンドウ内のプロパティーは、以下の項目に分類されています。
- Impulse Channel (A)
- Signal Shape (B)
- Time Envelope (C)
- Spatial Range (D)
Impulse Channel
Impulse Listener は、インパルスをチャンネルによってフィルターし、インパルスがどの Impulse Source に反応するかを制御します。チャンネルはカメラのレイヤーのように機能しますが、これとは異なります。これらのプロパティーは、Impulse Source がインパルス信号を送信するチャンネルを制御します。詳細は、ドキュメントの フィルタリングに関するセクション を参照してください。
プロパティー | 機能 |
---|---|
Impulse Channel | ドロップダウンメニューから 1 つまたは複数のチャンネルを選択してください。 既存のチャンネルの修正や新規追加を行うには、Edit をクリックしてください。 |
Signal Shape
これらのプロパティーは、Impulse Source から発信される Raw 信号の基本的な性質を制御します。
プロパティー | 機能 |
---|---|
Raw Signal | Raw Signal の形式です。 信号アセットを信号名のフィールドにドラッグすると、信号を Impulse Source に接続できます。 歯車アイコンをクリックすると、信号に関する追加的なオプション (新しい信号を作成するオプションなど) が表示されます。 詳細は 振動の Raw 信号 のセクションを参照してください。 |
Amplitude Gain | Raw Signal の振幅に掛け合わせる値を設定します。振動の強さの制御です。デフォルトでは 1 に設定されています。 信号を増幅させるには 1 より大きい値を、元々の信号のままにする場合は 1 を、信号を減衰させるには 1 より小さく 0 より大きい値を、ミュートする場合は 0 を使用してください。 |
Frequency Gain | Raw Signal の周波数に掛け合わせる値を設定します。振動の速度の制御です。デフォルトでは 1 に設定されています。 信号の周波数を上昇させるには 1 より大きい値を、元々の信号のままにする場合は 1 を、周波数を低下させるには 1 より小さく 0 より大きい値を、ミュートする場合は 0 を使用してください。周波数を 0 にすると一定のノイズ値に固定され、時間が止まったようになります。 |
Randomize | Raw Signal の開始時間をランダムにする場合は、これを有効にしてください。 このプロパティーは、Raw Signal がノイズプロファイルアセットである場合に利用可能です、詳細は振動の Raw 信号 のセクションを参照してください。 |
Repeat Mode | Raw Signal を、Time Envelope (時間のエンベロープ) の継続時間中ループさせるか、Time Envelope に合わせて伸長させるかを設定します。 このプロパティーは、Raw Signal が Fixed Signal である場合に利用可能です。詳細は[振動の Raw 信号] (CinemachineImpulseRawSignal.md) に関するセクションを参照してください。 |
Time Envelope
これらのプロパティーは、インパルスの継続時間と、その継続時間中における Raw Signal の強度を制御するものです。
プロパティー | 説明 |
---|---|
Attack | 波形の立ち上がり部分において、信号の振幅がどのように最大値に達するかの設定です。プレビューペイン (灰色のバー) をクリックして曲線の形状を設定し、最大振幅に達するまでに掛かる時間 (単位: 秒) を数値フィールドに入力してください。プレビューペインを空白のままにすると、デフォルトの曲線が使用されます (デフォルトの曲線は、ほとんどの目的に適うものとなっています) 。 |
Sustain Time | 波形の立ち上がり後における、最大振幅の状態の継続時間を設定します。 |
Decay | 信号がどのように最大振幅から波形の終わりにゼロになるかを定義します。プレビューペイン (灰色のバー) をクリックして曲線の形状を設定し、信号がミュートされるまでに掛かる時間 (単位: 秒) を数値フィールドに入力してください。プレビューペインを空白のままにすると、デフォルトの曲線が使用されます (デフォルトの曲線は、ほとんどの目的に適うものとなっています)。 |
Scale With Impact | Time Envelope に信号の振幅スケーリングを適用する場合に有効にしてください。有効にすると、Cinemachine Impulse Source コンポーネントが、衝撃の強さに応じて Time Envelope をスケールします。強い衝撃ほど長く継続し、弱いほど継続時間は短くなります。 |
Spatial Range
これらのプロパティーは、シーン内の領域を定義します。この Impulse Source から発生するインパルスは、この領域内の Impulse Listener にのみ影響を与えます。
プロパティー | 説明 | |
---|---|---|
Impact Radius | シーン内の、衝撃点を中心とした領域の半径を設定します。この領域内では信号が最大振幅の状態に維持されます。この領域を超えると信号の強度が Dissipation Distance の距離の範囲内で減衰します。その後、強度はゼロになります。つまり、信号の全体の有効半径は Impact Radius と Dissipation Distance を足したものとなります。 | |
Direction Mode | Impulse Listener が Impulse Source から遠ざかった際に、Cinemachine Impulse Source コンポーネントがどのように信号の方向を適用するかの設定です。 | |
Fixed | 信号の方向を固定する場合は Fixed を使用してください。 | |
Rotate Toward Source | 信号を Impulse Source の方向に向ける場合は Rotate Toward Source を使用してください。ソースの位置が微妙に見えるような効果を与えます。Rotate Toward Source は、放射状に対称な信号には効果を発揮しません。 | |
Dissipation Mode | Impulse Listener が Impact Radius の範囲外にある時に、信号がどのように消散するかの設定です。 | |
Linear Decay | 信号は Dissipation Distance の距離の範囲内で均一に消散します。 | |
Soft Decay | 信号が、Dissipation Distance の開始部ではゆっくり、中間部ではより素早く、最後は再びゆっくり消散します。 | |
Exponential Decay | 信号が、Dissipation Distance の開始部では非常に素早く消散し、終わりに近づくに従って徐々にゆっくりと消散します。 | |
Dissipation Distance | Impact Radius の範囲を超えてから、信号が最大振幅からゼロまで減衰する距離の設定です。 | |
Propagation Speed | インパルスが空間を伝搬する速度 (m/s)。高速の場合はリスナーは瞬時に反応し、低速の場合はシーンのリスナーは、ソースから広がる波に反応するように動作します。 |