提供: Japanese Scratch-Wiki

このきじは ひらがなのページがありません。ごめんなさい。編集者向け:作成する
引力とは、2つ以上のオブジェクトがお互いに引きつけ合う力のことを指す。重力も引力の一種である。
Warning メモ: ここで紹介するスクリプトを利用するときは、自分のプロジェクトにあわせて数値などを変更する必要がある。

シンプルに動かす

次の方法は、シンプルだが、場合によってはとても便利だ。このスクリプトを指定したスプライトは、スクリプトの実行中ずっと、スプライト2に引き寄せられる。

@greenFlag がクリックされたとき
ずっと
  [スプライト2 v] へ向ける
  (5) 歩動かす
end

この方法を使ったスクリプトの例としては こちら を参照してほしい。

速度を利用する

次のメソッドでは、スプライトの速度を相手との距離に応じて変更し、2つのスプライトの間に引力が働いている様子を表す。物理的に正確でない部分はあるが、ゲームなどで、1つのスプライトのまわりを行ったり来たりするスプライトがほしいときに便利だ。なおこのスクリプトは、引力で引き寄せられる側のオブジェクトに指定する。

@greenFlag がクリックされたとき
[y速度 v] を [0] にする
[x速度 v] を [0] にする
ずっと 
  もし <([x座標 v]\([スプライト2 v]\)) < (x座標)> なら 
    [x速度 v] を (-0.1) ずつ変える
  end
  もし <([x座標 v]\([スプライト2 v]\)) > (x座標)> なら 
    [x速度 v] を (0.1) ずつ変える
  end
  もし <([y座標 v]\([スプライト2 v]\)) < (y座標)> なら 
    [y速度 v] を (-0.1) ずつ変える
  end
  もし <([y座標 v]\([スプライト2 v]\)) > (y座標)> なら 
    [y速度 v] を (0.1) ずつ変える
  end
end

@greenFlag がクリックされたとき
ずっと
  x座標を ((x座標) + (x速度)) 、y座標を ((y座標) + (y速度)) にする
end

この方法を使ったスクリプトの例としては こちら を参照してほしい。


楕円軌道を動くスプライト

宇宙空間で、太陽と惑星や彗星、地球と月のように、ある天体が別の天体の周りをずっと回りつづけられるのは、これらの間に引力 (重力) が働いているからである。次にスプライト「太陽」のまわりを楕円軌道で移動するスプライト「彗星」の例を示す:

@greenFlag がクリックされたとき
[最大幅 v] を [110] にする // 楕円のx方向の最大幅
[最小幅 v] を [50] にする // 楕円のy方向の最小幅
[回転角度 v] を [0] にする // 楕円を描画するのに使う変数 (度)
[楕円の傾き v] を [45] にする // 楕円全体の傾き (度)
ずっと 
  (360) 回繰り返す 
    [x v] を ((([cos v]\((回転角度)\)::operators) * (最大幅)) + ([x 座標 v]\([太陽 v]\))) にする //変数x, yは、傾ける前の楕円の円周上の点
    [y v] を ((([sin v]\((回転角度)\)::operators) * (最小幅)) + ([y座標 v]\([太陽 v]\))) にする
    x座標を (((x) * ([cos v]\((楕円の傾き)\)::operators)) - ((y) * ([sin v]\((楕円の傾き)\)::operators))) にする //「傾き」の度数、楕円全体を傾ける (三角関数の加法定理による回転)
    y座標を (((x) * ([sin v]\((楕円の傾き)\)::operators)) + ((y) * ([cos v]\((楕円の傾き)\)::operators))) にする
    [回転角度 v] を (5) ずつ変える
  end
end

三角関数を使用する

詳細は「重力のシミュレーション」を参照


関連項目