指定した時間範囲でエクスプレッションを適用する
指定した時間範囲でエクスプレッションを適用する方法を紹介します。
概要
こちらの記事では位置にエクスプレッションを適用する方法を紹介しました。
エクスプレッションを適用するとすべての時間でエクスプレッションが適用された状態になります。
この記事では、指定した時間の範囲でのみエクスプレッションを適用する方法を紹介します。
実装方法
エクスプレッションに
if
文を利用します。アニメーションの現在時間は
time
グローバルオブジェクトで取得できます。
timeの値はエクスプレッションが評価されているコンポジション時間を秒単位で表します。
事前準備
こちらの記事を参照して位置にエクスプレッションを適用したコンポジションを作成します。
手順
エクスプレッションのコードの変更
[位置]のエクスプレッションのコードを下記のコードに変更します。
if (4<time && time<8){
wiggle(80,10);
}else{
wiggle(0,0);
}
または、下記のコードでも動作します。
if (4<time && time<8){
wiggle(80,10);
}else{
transform.position
}
解説
if文を利用して条件に合致した場合のみに
wiggle(80,10);
を実行します。
現在の時刻はtimeで取得できます。下記のコードでは、コンポジションの現在の時刻が 4秒から8秒までの間でifのブロック内のコードを実行します。
条件に合致しない場合はelseのブロック内のコードを実行します。
if (4<time && time<8){
}else{
}
動作確認
タイムラインパネルの[現在の時間インジケーター]を移動します。if文を設定したキャラクターは4秒までは位置が変わらず静止した状態のままです。
4秒以降はwiggleのエクスプレッションが適用され、キャラクターが振動します。
動画
作成した動画は以下です。左のキャラクターは途中から動き始め、動き始めから4秒で停止します。
補足:エクスプレッションエラーについて
以下のif文のコードではエクスプレッションエラーが発生します。詳しくは
こちらの記事を参照して下さい。
if (4<time && time<8){
wiggle(80,10)
}
if (4<time && time<8){
wiggle(80,10)
}else{
}
if (6 >= time){
wiggle(80,10);
}
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。