○○かわいいシリーズのパーティクルをAEで再現する
荒川憩はあらかわいいで使ったエクスプレッションについて。
基本的にはかれをばなさんのを参考にしてます。
飛ばすのは画像でもいいのですが自分はテキストにしました。使用フォントはたぬき油性マジック、72ptです。
まずは動かすためにアンカーポイント。位置じゃない理由は後述します。
t = timeToFrames(time - inPoint);
a = Math.floor(t/12.5);
seedRandom(index+a,true);
rand1 = random(100,150);
v = t - a * 12.5;
y = rand1 * Math.log (v + 1);
[0,y,0];
BPMが144で30fpsだと1小節50フレーム、一拍は12.5フレームになるので、時間tを12.5で割ったのを切り上げれば(変数a)繰り返し回数が分かります。
ここで作ったaを用いて、seedRandomの値にindex+aを入れれば一拍ごとに違う乱数が生成されます。
さらにv に t - a * 12.5を代入すれば拍ごとにループすることができるように。
あとはrand1の乱数で飛ぶ距離をぶれさせつつlog関数的な移動をさせてあげればOK。
次は回転。かれをばなさん的な三角関数を使う方法はどうも自分の頭では理解できなかったので、アンカーポイントで移動させて回転方向をバラけさせれば似たようなことできるでしょという適当な考え。
角度制御に
t = timeToFrames(time - inPoint);
a = Math.floor(t/12.5);
seedRandom(index+a,true);
random(-180,180);
さっきと同じようにループ機能つき。あとはこれをX回転・Y回転・Z回転で参照してあげれば終わり。ちなみにせっかくなのでテキストの回転もこれを参照してます。同じ乱数使ってるからちょっとランダムっぽさがないかも。
そしてソーステキスト。
t = timeToFrames(time - inPoint);
a = Math.floor(t/12.5);
seedRandom(index+a,true);
moyou = random();
if(moyou >= 0.75){text.sourceText = "○";}
else if(moyou >= 0.5){text.sourceText = "△";}
else if(moyou >= 0.25){text.sourceText = "□";}
else{text.sourceText = "☆";}
乱数使って○・△・□・☆がそれぞれ25%ずつの確率で表示されるように。
このままだと登場位置が同じになるので位置に乱数を使ってちょっとずらします。
t = timeToFrames(time - inPoint);
a = Math.floor(t/12.5);
seedRandom(index+a,true);
rand1 = 640 + random(-36,36);
rand2 = 360 + random(-36,36);
rand3 = random(-36,36);
[rand1,rand2,rand3];
最後に不透明度。
t = timeToFrames(time - inPoint);
a = Math.floor(t/12.5);
v = t - a*12.5;
100 - 0.6*v * v;
二次関数的に値が変わるようにしました。これには乱数使ってないです。
あとはこのテキストレイヤーを飛ばしたい個数の数だけ複製しましょう。私は確か12個くらいにしたんですが、もっと多いほうが賑やかかも。