- home
- AE Expression
- エクスプレッション回転篇
6:エクスプレッション回転篇
では、サンプル01の位置プロパティにセットされているエクスプレッションを解除するために、altキーを押しながら、凹んでいる「=」マークをクリックしてください。
次にトランスフォームで回転を選び、Shift + alt + ^ のショートカットでエクスプレッションを反映させてください。
transform.rotation と表示されるので、「+20」と追記入力してください。(前に入れる場合は、「20+」です。)
するとマゼンタの四角形が20度回転するはずです。(コンボ6)
transform.rotation+20;
もう少し練習してみましょう。今度は「*20」と入力してください。これは全く動かないですよね。なぜでしょう?
transform.rotation*20;
回転プロパティの場合、初期値が「0」 です。ですから、掛算の場合は、いくら掛けても「0」のままです。これは普通の算数と同じですね。次に「/20」と入力してください。「/」は割算の意味です。これも全く動きませんね。
transform.rotation/20;
では、「20 / transform.rotation」と入力したらどうでしょう?
20/transform.rotation;
警告が出ましたね。これは20を0で割ろうとしたため、エラーになったのです。
1次元で配列を試す
では、ここで配列を試して見ましょう。構文は次の通りに入力してください。(コンボ7)
a = transform.rotation[0];
[10];
どうですか、マゼンタの四角形が10度回転したはずです。次に配列の仕組みをもう少し理解するために
a = transform.rotation[1];
[10]
と入力したらどうなるでしょうか?
すると、警告が出ましたね。
「インデックス1が1次元のストリームに対して範囲外です。」というメッセージです。何を言わんとしているのかよく分からないと思いますが、ここで表現していることは、[1]という数値は配列でyを表し、回転プロパティには不要な数値だということです。
つまり回転のプロパティにはxの1次元的要素があれば事足りるため、yという2次元的な要素を指定しても意味がなくエラーになったということなのです。
回転のエクスプレッションを極める
では、もう少し高度な技術を試してみましょう。
a = transform.rotation[0];
[10];
の[10]を[random()];と打ちなおしてください。(コンボ8)
a = transform.rotation[0];
[random()];
タイムラインのカーソルを動かしてみると、四角形が微妙に角度を変えて動いているのが分かるでしょう。
次に、[random()];を[random(100)];と打ち直してカーソルを動かしてください。
a = transform.rotation[0];
[random(100)];
先ほどより大きく動くようになりましたね。
一応、前述した
a = transform.rotation[0];
[random()];
もグラフビューで動きを確認しておいてください。
これをキーフレームで作ろうとすると大変だというのは分かっていただけたでしょうか。
関数の基本
では、このエクスプレッションを解説しましょう。
まず関数 random() というのは、AEがあらかじめ持っている組込関数です。組込関数というのは、エクスプレッションに random() と記述してやれば、ランダムな数値を発生して回転や移動、スケールなどの数値プロパティを変更してやることが出来るというものです。
組込関数には、必ず関数名の後に丸括弧()が付いています。この括弧の中には、様々な条件(正しくは引数、「ひきすう」といいます)を入れてやることができ、このrandom()の場合は、範囲指定をする数値を入れることが可能です。
では、
a = transform.rotation[0];
[random(1,100)];
と入力してください。(コンボ9)
カーソルを動かすと、1.00度から99.99度までの間で回転プロパティの数値が変わるはずです。
では、
[random(-100,100)];
としたらどうでしょう。カーソルを動かすと、-99.99度から99.99度までの間で回転プロパティの数値が変わるはずです。
いかかですか?ちょっとエクスプレッションの世界にはまりましたね。
ちょっと休憩
ここで間違えやすいのは、かぎ括弧と丸括弧の付け忘れと、カンマとピリオドの間違いです。皆さんは大丈夫でしたか?