その2で読み込む素材を作ったので、あとはAE上での作業です。
エクスプレッションは以下を使います。
random()
posterizeTime(framesPerSconde)
Math.floor(value)
あ、全部エクスプレッション言語メニューにあるものばかりだ。(^^)
取っ付きにくいと思ってたけど、基本的なものはあそこに入ってたのね…
まず、AEのコンポジションは20秒(29.97fps)にしました。
サイズは1280×720 px。
任意の平面レイヤーを下に、格子模様を上に、
そして真ん中に、正方形を配置します。
正方形の位置は(20,20)。
見ての通り、正方形は一辺が40px、格子も一区画が40px。
というわけで、現在位置(20,20)からx方向/y方向とも40 pxづつ動けば格子内に収まります。
そこで、そうなるように考えて考えたエクスプレッションが以下の通り:
x=transform.position[0]+40*random(31);
y=transform.position[1]+40*random(17);
[x,y]
random(数値)は「0〜数値」の間でランダムな数値をとります。
たとえば、random(31)は0〜31の間の任意の数値になります。
上のエクスプレッションだと、xは最大31、yは最大17なので、最も大きな数値でも
x=20+40×31→1260
y=20+40×17→700
となり、一番右下の格子に収まります。
そこで、正方形の位置プロパティにこのエクスプレッションを書きます。
そして、正方形を動かすと、こうなりました。
速えぇ… (´△`)
しかも、止めてみると、格子に収まってないし。
格子に収まっていない。
のと、なんとかしましょう。
random(数値)では、整数以外(23.4とか)もとるので、これを整数にしたい。
そこで使用するのがMath.floor(切り捨て)です。
で、このように書き換えました。
x=transform.position[0]+40*Math.floor(random(31));
y=transform.position[1]+40*Math.floor(random(17));
[x,y]
今度はどうでしょう??
速いのは相変わらずですが、止めてみると、格子の中に収まってます。
では、スピードを落とすために、posterizeTime(数値)を加えます。
posterizeTime(数値)は、スローモーション(速くもできるが)のコマンド。
(1)だと1秒間に1回、(3)だと、1秒間に3回動くようになります。
(0.5)だと1秒間に0.5回、つまり2秒間に1回ですね。
それでは、以下のように書き換えます。
posterizeTime(1);
x=transform.position[0]+40*Math.floor(random(31));
y=transform.position[1]+40*Math.floor(random(17));
[x,y]
これで、↓のように思い通りの動きになりました。
そして、仕上げは残りの正方形(黄色、灰色、水色)を(20,20)に配置して、同じエクスプレッションを適用するだけです。
私はイラレで4色準備したけど、AEのエフェクト、
●エフェクト→色調補正→色調/彩度
でも色は変えられるから、一色だけ用意しても良いような気が… いやそっちのほうが楽だった!
以上で、突っ込みどころも多いですけど、「格子の中を正方形が1秒ごとにランダムな場所に移動する」完結です。random()は理解しやすくて、いろいろ試してみたいなと思えました。とくにサウンドインジケーターなんて、こっちのほうが自由に作れそうだし。
今回のエクスプレッションは先人からのパクリではなく、初めて自分の頭で考えたものなので、変なところあるかもしれないです。そこんところをご留意くださいませ。┌|-.-|┐
でも、不器用でも自分で考えて作るのは面白いです。