イージングアウトの作り方

イージングアウトの作り方
ok-scratch

スクラッチに挑戦している皆さん、どうも!スクラッチコーチです。

スクラッチでマウスカーソルに滑らかに追従するアニメーションを作ろう!変数と除算を使ったイージングアウトの仕組みを習得すれば、ゲームやアニメーションに自然な動きを追加できるよ。

さぁ、スクラッチでナニ作る!?

マウスカーソルに向かってスプライトが滑らかに追従する、イージングアウト(減速補間)の基本デモ作品

動画で見てみよう

ok-scratch

ok-scratch

チャンネル登録して応援よろしく!チャンネル登録する

チュートリアルの元になった作品

今回の目標

変数2つ(目標X座標・目標Y座標)とループを使って、スプライトがマウスカーソルに向かってなめらかに減速しながら追いかけるイージングアウトの動きを実装する。

スターター作品をリミックスしよう

このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード

#1初期設定

準備

スプライト「フォロワー」を開く

フォロワーフォロワー
スプライトについて
マウスカーソルの位置に滑らかに追従するスプライト。目標座標との差を10分の1ずつ縮めることでイージング移動を実現する。
どんな役割か
マウスを追いかけるスプライトを作るよ!マウスの位置を目標として記憶しておいて、そこに向かってじわじわ近づいていく動きを実装するんだ。これで滑らかな追従アニメーションが完成するよ。

実装

step-0

マウスを追いかけるスプライトを作っていくよ。まずはイベントが押されたときでプログラムを開始して、スプライトの準備をしよう。

見た目大きさを ( ) %にするでサイズを50%にするんだ。元の半分の大きさになるから、画面上で追従の動きが見やすくなるよ。

ok-scratch

ok-scratch

ゲームやアニメーションを作るとき、最初のステップで見た目を整えるのは定番パターン。サイズや位置を旗クリック直後にセットしておけば、何回実行しても毎回同じ状態から始められる。動きの確認やデバッグがぐっと楽になるんだ。

 


確認プレビューしておこう

旗を押すとフォロワーのサイズが半分になったね。

#2イージング移動

準備

変数「目標X座標」を追加

マウスカーソルのX座標を格納する変数。毎フレーム更新され、スプライトの移動先X座標として使われる。

変数「目標X座標」を追加

変数「目標Y座標」を追加

マウスカーソルのY座標を格納する変数。毎フレーム更新され、スプライトの移動先Y座標として使われる。

変数「目標Y座標」を追加

実装

step-1

ここからが本番。制御ずっとループの中で、マウスの位置めがけてスプライトがなめらかに追いかけていく動きを作るよ。

「目標X座標」と「目標Y座標」にマウスの座標を毎フレーム記録して、今のスプライト座標との差を10で割った分だけ動きx座標を ( ) ずつ変える動きy座標を ( ) ずつ変えるで移動させるんだ。距離が遠いと大きく動いて、近づくほどブレーキがかかる——もし割り算なしで固定値で動かしたら、マウスの近くでカクカク振動して止まれなくなる。これがイージングアウト(減速補間)の威力だよ。

ok-scratch

ok-scratch

普通、マウスの位置に動かしたいときは「〜秒でXY座標へ滑る」ブロックを使うけど、それだと固定時間で到着するから距離に関係なく同じスピード感になっちゃう。この「(目標 − 現在) ÷ 10」方式なら、遠いときはすーっと速く、近いときはふわっとゆっくり。ゲームやWebサイトのアニメーションでも、このイージングの仕組みはめちゃくちゃ使われてるんだよ。

 


確認プレビューしておこう

マウスを動かすとフォロワーがじわじわ追いかけてくる、これがイージングアウトの動き。

まとめ

たった7ブロックで、本格的なイージングアウトが完成したね!「(目標 − 現在) ÷ 10」の計算は、この先ゲームやアニメーションを作るときに何度でも使えるテクニックだよ。変数に入れる値や割る数を変えて、自分だけの動きにカスタマイズしてみよう!

ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!