提供: Japanese Scratch-Wiki

このきじは ひらがなのページがありません。ごめんなさい。
() 秒でx座標を () に、y座標を () に変える
() 秒でx座標を () に、y座標を () に変える
カテゴリ 動き
タイプ スタック

() 秒でx座標を () に、y座標を () に変えるブロック (動きブロックスタックブロック) は、指定したx-y座標まで、指定した秒数をかけて、スプライトを滑らかに動かす。似たようなことはスプライトの向きを指定して、繰り返し () 歩動かすブロックを実行すれば実現できるが、このブロックを使うほうがより動きが正確になる。

ただし、このブロックには、スプライトが動いている間、スクリプトの実行がそこで停止するというデメリットもある。したがって、スプライトが動いている間、そのスプライトは他のことができない。 また、このブロックの動作を中断できるのは、() を止めるブロックだけである。もし端に着いたら、跳ね返るブロックは、このブロックの動作中は動作しない。

よくある使用例

このブロックは、スプライトを滑らかに動かしたいときに使用する。

よくある使用例は次のとおり:

  • 水槽の魚を泳がせる
ずっと
((1) から (2) までの乱数) 秒でx座標を ((-240) から (240) までの乱数) に、y座標を ((-100) から (100) までの乱数) に変える
  • 画面の端から端まで動く、おジャマスプライトを出現させる(ゲーム「フロッガー」に出てくる車のような)
 [StartCars v] を受け取ったとき
隠す
x座標を (240) にする
<(ゲームオーバー) = [1]> まで繰り返す
    [自分自身 v] のクローンを作る
    (3) 秒待つ
end

クローンされたとき
表示する
(5)秒でx座標を(-240)に、y座標を(y座標)に変える
このクローンを削除する
  • スプライトを上から落とす
y座標を (180) にする
(1) 秒でx座標を (x座標) に、y座標を (-180) に変える
  • 別のスプライトの位置に移動する
(1) 秒でx座標を ([スプライト2 v] の [x座標 v]::sensing) に、y座標を ([スプライト2 v] の [y座標 v]::sensing) に変える

() 歩動かすブロックとの比較

下記は、() 歩動かすブロックを使って、スプライトを左端から右端に8秒で動かすスクリプトである。

x座標を (-240) にする
(80) 回繰り返す
    (6) 歩動かす
    (0.1) 秒待つ
end

これを 「() 秒でx座標を () に、y座標を () に変える」ブロックで行うと次のようになる。

x座標を (-240) にする
(8) 秒でx座標を (240) に、y座標を (y座標) に変える

スローアウト効果を使う

このブロックの動きはリニア (直線的:最初から最後まで同じ速度) であり、そのままではスプライトはスローイン (ease-in)/スローアウト (ease-out) しない (これらの効果はグラフィックデザイン分野で非常によく使われる)。ただし、スローイン/スローアウト効果をScratchで再現するのは決して難しくない。次に、目的地にたどり着くに従って速度を落とすスローアウトの例を示す。

[トゥイーン v] を受け取ったとき// トゥイーン (tween) とはフレーム補間のこと
<<(((目的地のx座標) - (x座標))の[絶対値 v]::operators) < [0.25]> かつ <(((目的地のy座標) - (y座標))の[絶対値 v]::operators) < [0.25]>> まで繰り返す
 x座標を (((目的地のx座標) - (x座標)) / (2)) ずつ変える
 y座標を (((目的地のy座標) - (y座標)) / (2)) ずつ変える
end
x座標を (目的地のx座標)、y座標を(目的地のy座標) にする

次のスクリプトでもスローアウト効果を実現できる。このスクリプトの200は、スプライトが到着する目的地のx座標を示している (横方向に移動する)。2つのx座標ブロックをy座標に変更すれば、たて方向 (Y軸方向) へのスローアウトになる。


[トゥイーン v] を受け取ったとき
<((x座標) を四捨五入) = [200]> まで繰り返す
    x座標を(((200) - (x座標)) / (10)) ずつ変える
end

関連項目