UnityのDefault PlayablesとTimeline Playable Wizardを使う際の備忘録 後編 Normal Modeを使う

はじめに

この記事は、前編(UnityのDefault PlayablesとTimeline Playable Wizardを使う際の備忘録 前編 Standard Bind Playableを使う)の続きです。こちらではDefault PlayablesのTimeline Playable WizardのNormal modeの使い方をまとめます。Timeline Playable Wizardの基本的な使い方は前編をご覧ください。

 

Normal Modeは、タイムラインで操作するゲームオブジェクト以外への参照が必要な時に使用します。例えば、指定する二つのゲームオブジェクトの間を移動させるなどです。

 

使用するサンプルスクリプト

今回は、こちらの NormalModeSample.cs を使います。

gist64e5f0aee13fae187a658cd08b92c8f7

 

Unity Editor上でファイルを作り、Main Cameraにコンポーネントとしてアタッチしてください。

f:id:oitsmalab:20180625113143p:plain

このスクリプト自体は、SampleVariableの値をDebug.Logで表示する以外のことは行いません。SampleVariableに入れるべき値はPlayableの方で行います。

Timeline Playable WizardのNormal modeの設定

Timeline Playable Wizardを開きます。今回は以下の通りに設定します。

 

f:id:oitsmalab:20180625120009p:plain

Standard Blend Playableのチェックは入れません。

Exposed Referencesにはシーン内のほかのゲームオブジェクトへの参照をするための変数を指定します。今回は、OtherGameObjectTransformという名前で、ほかのゲームオブジェクトのTransformを参照できるよう設定します。

Behaviour Variablesはシーン内のオブジェクトへの参照が不要であるものを指定します。今回はMultiplyというfloatの値を使います。

あと、Create Drawerにもチェックを入れておきます。

最後に、Createボタンを押して、Playableを作成してください。

 

MixerBehaviourの設定

Createを押すと、以下の通り、NormalModeSamplePlayableのスクリプトが作られます。この中のNormalModeSamplePlayableMixerBehaviourのスクリプトを編集します。

f:id:oitsmalab:20180625121839p:plain

スクリプトは、以下の通りです。

gistc7901e6460f0137df332ae601e949f40

 

11行目のtrackBindingがWizardで指定したTrack Binding Type(今回はNormalModeSample.cs)への参照になります。NormalModeSample.cs内のSampleVariableへはこれでアクセスできます。

 

この中で18行目にforループがありますが、ここで追加した各クリップでの処理を行います。

inputWeightはクリップ外では0、クリップ内では1ですが、Easingを設定している場合は徐々に0~1で値が変化します。

inputは、Exposed ReferencesやBehaviour Variablesで指定した変数(今回はOtherGameObjectTransform, Multiply)を参照するために使います。

 

これら、inputWeightとinputを使って必要な計算を行い、trackBindingで参照できるTrackBinding Typeへ値を与えます。その処理は、24行目の"// Use the above variables to process each frame of this playable."以下に追加します。今回は、以下の行を追加します。OtherGameObjectTransformのy座標をMultiply倍する処理にinputWeightを追加しただけの処理です。

 

trackBinding.SampleVariable = input.OtherGameObjectTransform.position.y * input.Multiply * inputWeight;

 

 

追加したら、保存してください。

 

Timelineで使う

Main CameraにTimelineを追加し、TimelineにNormal Mode Sample Playable Trackを追加します。このTrackの任意の場所にClipを追加しましょう。以下の通りになるはずです。

 

f:id:oitsmalab:20180625123818p:plain

 

追加したClipには、Exposed ReferenceやBehaviour Variablesで指定した変数への設定ができます。今回は、以下の通りMultiplyを5とし、OtherGameObjectTransformとしてDirectionl Light(y座標 = 3)を与えます。また、Ease In Durationを1にしておきます。

 

f:id:oitsmalab:20180625124700p:plain

 

この設定で実行すると、以下の通り、クリップ内でNormalModeSample.csのSampleVariableの値が0から15に上昇します。15というのは、OtherGameObjectTransformとして指定したDirectionl Lightのy座標が3、Multiplyの値が5で、それらの積をSample Variableに保存しているからです。

f:id:oitsmalab:20180625125145g:plain

 

Clip内を実行中にDirectionl Lightのy座標を変えれば、それによってSample Variableの値も変わります。

f:id:oitsmalab:20180625130747g:plain

 

このように、自分以外のオブジェクトを参照しながらTimelineを実行するには、Normal Modeを使うのが良いです。