エクスプレッション 〜ボールのバウンド〜

エクスプレッションを使わなくても、位置プロパティにキーフレームを打って、グラフエディタでスピードの強弱を付ければ、それなりのものできます。
教則本の6章を読めば大体のことはできそうです。でもあえてエクスプレッションでトライしてみます。


今のところ、こんな感じで完成してます。

高いところからボールを落とすと、最初は勢いよくバウンドしますが、だんだんバウンドの大きさは小さくなり、最後には停止する。これ全部キーフレームを打つのは大変です。
実際の動きをグラフエディタで見てみるとこうなります↓
20120809_2

この緑のグラフの山と谷を全部キーフレームを打って、しかもバウンドらしく見せるために細工するなんて気が遠くなる作業です。たった10秒の動画なのに。
でも、エクスプレッションを使えば、こんなに簡単↓
20120809_3
書き出すと、こうなります:

var amplitude=300;
var frequency=1;
var decay=0.5;
var x=transform.position[0];
var y=transform.position[1]-[amplitude*Math.abs
(Math.cos(frequency*time*2*Math.PI)/Math.exp(decay*time))];
[x,y]

★5〜6行目:var y=transform.position[1]-[amplitude*Math.abs
(Math.cos(frequency*time*2*Math.PI)/Math.exp(decay*time))];
本来1行での表記です。

いくつか参考にしたソースがあって、それを自己流で混ぜてるので、プロから見れば変かもしれないです。でもそれらしい動きになったので良しとしました。

で、今となっては、どうやって作れたのかあやふやになってきた…
Math.cosをベースに作ったものの、見よう見まねで作ったから、その仕組みが分かってないです。
それでは意味が無い! と思いますので、完成までの過程を記録しようと思います。
記録しておかないと、2度と同じものが作れそうにないし。

今回は私のスペックを上回るテクニックなので、系統立てて説明できないかもしれないです。
そういうの苦手なんだよな…(´ヘ`;)
そういうわけで、しばらくボールのバウンドに集中するです。


コメントを残す

メールアドレスが公開されることはありません。