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 |