ー オノマトペ ー  sono2

今回もオノマトペな動きを作ってみましょう.
オノマトペは日本語では擬態語や擬音語と訳され,「ふわふわ」や「ぴかぴか」といった状態や自然音を言葉で表したものの総称です.
前回は複数の動きを組み合わせて「ふわふわ」という動きをつくってみました.今回は大きさが変わることで動きを表現する「どきどき」をつくってみましょう。

「どきどき」
動揺する,興奮するなど日常より高ぶった状態をよくこのように表現します.この「どきどき」を実際にプログラミングしてみましょう.
まず,この どきどき を成分分析します.これは主観によりますが,私は,このどきどきを心臓の動き,すなわち

ある一定の大きさの物体が数秒間隔で大きくなり,元の大きさに戻るもの

と考えました.では,これをプログラミングしてみましょう.
ソースコードはこうなります.

 
point size, center;
[setup]{ size = new point(50, 50); center = new point(200, 200); }
[paint]{ clearAll(); fillOval(center, size.x, size.y); }
[interval, 1.5]{ size.pushTo(1000, 1000); }

[always]{ size.pushTo(50, 50); }


実行結果はこうなります.

まず
point size, center;
で基準になる点 center とそこでの大きさを表す点sizeを準備し,それをsetup内の
size = new point(50, 50);
center = new point(200, 200);
によって初期化しています.sizeは物体の大きさを表すもので初期値として半径50で,その物体の位置はcenterで(200, 200)で初期化されています.
また,物体を実際に絵としてみせるためpaint内で
clearAll();
fillOval(center, size.x, size.y);
として,center を中心とした大きさがsizeの円を描いています.この段階で,点を準備してそれを描画するということはできました.

次は動きの記述です.
動きは「一定の大きさの物体が」,「数秒間隔で大きくなる」
と定義しました.
この「一定の大きさの物体が」がalwaysの部分であり,「数秒間隔で大きくなる」がintervalに対応します.詳細には,
「いつも同じ大きさに向かって力を加えながら」を「1.5秒単位で(1000,1000)の大きさに押す」としました.
[always]size.pushTo(50, 50);でいつもsizeを(50, 50)へ押しています.
[interval, 1.5]size.pushTo(1000, 1000);で1.5秒毎にsizeを(1000, 1000)へ押しています.
つまり,いつも(50, 50)という大きさになろうとするけど,1.5秒ごとに(1000, 1000)という外向きの大きな力が加わる.ということで「どきどき」を表現しています.

このようにして,「ある一定の大きさの物体が数秒間隔で大きくなり,元の大きさに戻るもの」すなわち「どきどき」をプログラミングしました.