#Cinemachine Collision Impulse Source
衝突ベースの Impulse を生成するには、Collider コンポーネントあるいは Collider2D コンポーネントを持つゲームオブジェクトに CinemachineCollisionImpulseSource コンポーネントをアタッチしてください。CinemachineCollisionImpulseSource は、何かがそのゲームオブジェクトに衝突したりトリガーゾーンに入った時にインパルス (衝撃、刺激など) を生成します。
Collision Impulse Source コンポーネントは以下の手順で追加できます。
Impulse を生成したいゲームオブジェクトを選択し、そのインスペクター上で Add Component ボタンをクリックしてください。
Scripts > Cinemachine から Cinemachine Collision Impulse Source を選択してください。
デフォルトでは、Impulse Source は範囲内の全ての Impulse Listener に影響を与えるように設定されていますが、チャンネルによるフィルタリング を適用すれば、Impulse Source が一部の Impulse Listener のみに影響を与えるように設定することもできます。
プロパティー
Cinemachine Collision Impulse Source のインスペクターウィンドウ内のプロパティーは、以下のセクションに分類されています。
- Impulse Channel (A)
- Signal Shape (B)
- Time Envelope (C)
- Spatial Range (D)
- Trigger Object Filter (E)
- How to Generate The Impulse (F)
Impulse Channel
Impulse Listener は、インパルスをチャンネルによってフィルタリングし、インパルスがどの Impulse Source に反応するかを制御するものです。Channel はカメラのレイヤーのように機能しますが、これとは異なります。Impulse Channel プロパティーは、Collision Impulse Source がインパルス信号を送信するチャンネルを制御します。詳細は、ドキュメンテーションのフィルタリングに関するセクション を参照してください。
プロパティー | 機能 |
---|---|
Impulse Channel | ドロップダウンメニューから 1 つまたは複数のチャンネルを選択してください。 既存のチャンネルの修正や新規追加を行うには、Edit をクリックしてください。 |
Signal Shape
これらのプロパティーは、Collision Impulse Source から発信される Raw 信号の基本的な性質を制御するものです。
プロパティー | 機能 |
---|---|
Raw Signal | Raw 信号の形式です。 信号アセットを信号名フィールドにドラッグすると、その信号を Collision Impulse Source に接続できます。 歯車アイコンをクリックすると、信号に関する追加的なオプション (新しい信号を作成するオプションなど) が表示されます。 詳細は振動の Raw Signal に関するセクションを参照してください。 |
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 Collision 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 Collision 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 の範囲を超えてから、信号が最大振幅からゼロまで減衰する距離の設定です。 |
Trigger Object Filter
これらのプロパティーは、トリガーゾーンに衝突したり入ったりする時にインパルスをトリガーするゲームオブジェクトをフィルターします。Layer Mask によって指定されたレイヤーにあるゲームオブジェクトは、Ignore Tag のタグを付けない限りは、インパルスをトリガーします。詳細は、ドキュメントのフィルタリングに関するセクション を参照してください。
プロパティー | 説明 |
---|---|
Layer Mask | このレイヤー内の Rigidbody コンポーネントが Impulse Source に衝突したりトリガーゾーンに入ると、Source が信号を送信します。 |
Ignore Tag | このタグの付いたゲームオブジェクトは、Layer Mask で指定されたレイヤー内にあっても、インパルスを生成しません。 |
How To Generate The Impulse
Impulse は、ある位置に特定の運動速度と質量で引き起こされる衝撃によってトリガーされます。Unity は、Impulse をトリガーする Rigidbody あるいは Rigidbody 2D コンポーネントの質量と速度を、動的に計算します。How To Generate The Impulse プロパティーは、Rigidbody の質量と速度がどのように信号の強さと方向に影響を及ぼすかを制御します。
プロパティー | 説明 |
---|---|
Use Impact Direction | 衝撃の運動速度の方向に合わせてインパルス信号を回転させる場合は、この設定を有効にしてください。例えば、Raw 信号が縦に振動する一方で衝撃の方向が横である場合は、このプロパティーを確認して、最終的にインパルス信号が横に振動するように調整します。 衝撃の方向に関わらず Raw 信号の方向を使用する場合は、この設定を無効にしてください。 |
Scale Impact With Mass | 衝突したゲームオブジェクトの質量に応じてインパルス信号の振幅を増減させる場合は、この設定を有効にしてください。質量は、Cinemachine Impulse Source を含むゲームオブジェクトおよび衝突したゲームオブジェクトの、 Rigidbody コンポーネントか RigidBody2D コンポーネント内に設定されます。 質量を 1 に固定する場合は、この設定を無効にしてください。 |
Scale Impact With Speed | 衝撃の速度に応じてインパルス信号の振幅をスケールする場合は、この設定を有効にしてください。素早く動くゲームオブジェクトほど運動量が大きくなるので生成される信号がより強くなります。 衝突したゲームオブジェクトの速度を無視する場合は、この設定を無効にしてください。 |