More ... | HSPコンテスト:ショートプログラム:数学・物理編:振動
物体の振動のさせ方はいろんなところで利用できるので覚えておくと便利です。 振り子やメトロノーム、ばねなども全部同じ仕組みです。 物が振動するためには、物が左にあるときは右に、右にあるときは左に押してやればいいわけですから x = 200 repeat await 10 x += speed/100 if x<0: speed += 10; 0 を中心に左右に揺れる if x>0: speed -= 10 line x+200, cnt loop となります。 さらに普通は振動の中心から離れるほど強い力が働くので、 x = 200 repeat await 10 x += speed/100 speed += -x/10; 0 を中心に左右に揺れる line x+200, cnt loop とするとさらに本物っぽくなります。 一般に repeat 位置 += 速度/FPS 速度 -= 位置/重さ loop で振動させることができるので、覚えておくとめちゃ便利です。 FPS や 重さはそれっぽく見えるように適当に変えちゃってOKです。 普通は重さを 1 にして、FPS のほうでいろいろ調節します。(そのほうが切り捨て誤差の関係で滑らかに動きます) ちなみに動作がカクカクしているのは HSP で小数点が扱えないせいです。 一応 HSPコンテスト:ショートプログラム:数学・物理編:運動 にちょこっと書いてありますが、あらかじめ x 倍した状態で計算しておいて、描画するときに x で割るようにするときれいになります。 GALAXY SHOOTING・STAR(ソース) のノーマッドや、 グラビタ・パーティクルず(ソース) の粒子、 Line-Ball(ソース) のゴムなどはすべてこの仕組みを応用しています。 |