地図/気まぐれ/ゲームの手触り

まず毎フレームを二つに割る

動く絵はどれも同じ形をしている。状態を少し進めて、いまの状態を描く。この二つを毎フレーム繰り返す。

boids も中身は update と draw の往復になっている。各 boid の速度を計算して位置を進めるのが update、その位置に三角を描くのが draw。

状態を進める update と、画面を描く draw を分ける。両者を一緒くたにすると、位置の更新が描画回数に縛られ、フレームの多い環境ほど物理が速く進む。役割を切り離しておくと、進める頻度と描く頻度を独立に変えられる——update だけ止めて draw は続ける(ポーズ)、update を複数回まわしてから一度だけ draw する(追いつき)といった操作が、同じループのまま効く。

状態をオブジェクトに集めて、update で進め、draw で描く。ボールに重力 0.2 を毎フレーム足し、床(h - 6)に当たったら速度を反転して 0.8 倍に落とす。

ボールが跳ねるたびに頂点が下がり、床で落ち着く。update は数だけ進め、draw は画面だけ触る。二つの関数は互いの中身に手を出さない。draw が tintAlpha の薄い膜を毎フレーム上から塗るので、軌跡が薄く尾を引く。update の中身を空にすると draw は動き続けるのにボールが止まり、進めることと描くことが別物だと出る。