バネみたいな動きの式

自分の中で「魔法の式」と呼んでいる式です。以下のような動きが実現できます。マウスカーソルを枠内に入れてみてください。スライダーで動きの調整も可能です。

  • 加速力
  • 摩擦力
  • 速さ

この動きを実現しているのがこんな式です。

移動量 = (移動量 + (目的地 - 現在地) / 摩擦力) * 加速力
現在地 += 移動量 * 速さ

上記のサンプルではX軸とY軸でそれぞれ移動量を出しています。具体的にはこんな感じ。

//moveX, moveY: 移動量
//toX, toY: 目的地(今回はカーソルの位置)
//x, y: 現在地(赤い丸の位置)
//friction: 摩擦力
//accel: 加速力

moveX = (moveX + (toX - x) / friction) * accel;
moveY = (moveY + (toY - y) / friction) * accel;
x += moveX * speed;
y += moveY * speed;
ball.style.left = x + "px";
ball.style.top = y + "px";

ゲームなんかで使えそうですかね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です