スプライトを画面外に「完全に」退場させる方法

スプライトを画面外に「完全に」退場させる方法
ok-scratch

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

同じコードなのにネコの動きが変わる!?コスチュームに透明な四角形を仕込むだけで、スプライトの範囲を操れるScratch小技を、アニメーションで実感しながら学べるチュートリアル。

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

このチュートリアルでは、まったく同じコードを書いた2匹のネコが、一方は画面端で止まり、もう一方は画面外に消えていくという不思議な現象を体験するよ。ポイントはコスチュームに仕込んだ透明な四角形。Scratchの画面端の処理がコスチュームのサイズで変わるっていう、知っているとデキる開発者になれる裏技テクニックだよ!コード自体はすごくシンプルだけど、Scratchの内部仕様を理解するのがちょっとチャレンジングかも。

動画で見てみよう

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

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

今回の目標

2匹のネコが同じコードで動くアニメーションを作り、コスチュームのバウンディングボックスサイズが画面範囲に与える影響を視覚的に確認できる作品を完成させる。

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

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

#1消えない猫の登場

ok-scratch ok-scratch
まずは「消えない猫」のアニメーションから作っていくよ。画面の左端からスーッと中央まで移動してくる演出だね。

準備

スプライト「とまり猫」を開く

とまり猫とまり猫
スプライトについて
上段を横切る猫スプライト。フラグクリックで左端から現れ、中央でしばらく待ってから右端へ消えていく。
どんな役割か
猫が画面の左からスーッと登場して、真ん中でちょっと待って、そのまま右に消えていくアニメーションを作るよ!上のラインを通る猫担当ね。3秒かけてゆっくりスライドするのがポイント!

実装

step-0

イベントgreenflag が押されたときでスタートしたら、左端(x:-255, y:50)に一瞬で移動させて、そこから動き( ) 秒でx座標を ( ) に、y座標を ( ) に変えるで3秒かけて画面中央(x:0)まで滑らせるよ。

y座標は50だから、画面のちょっと上寄りを通る感じ。この「3秒スライド」の動き、あとでもう1匹と見比べるとかなり面白いことが起きるよ。

確認プレビューしておこう 確認プレビューしておこう
旗を押すと、消えない猫が左端から3秒かけて真ん中までスライドしてきたね。

#2消えない猫の退場

ok-scratch ok-scratch
中央に着いた消えない猫を、今度は右へ退場させよう。
step-1

制御( ) 秒待つで1秒だけ間をおいてから、動き( ) 秒でx座標を ( ) に、y座標を ( ) に変えるでx:300に向かって3秒スライド。x:300って画面の右端よりずっと外側なんだけど……ここで面白いことが起きるんだ。

Scratchではスプライトが画面の外に完全に出ないようにブレーキがかかる。だから消えない猫はx:300を目指して進むけど、途中で端に引っかかって止まるんだよね。

ok-scratch ok-scratch
Scratchのステージ座標は-240〜240が画面に映る範囲で、この範囲の外にスプライトが飛び出すのを防ぐガードレールみたいなものがある。ただし、止まる位置はきっちりx:240じゃなくて、コスチュームのサイズによって微妙に変わるっていうのがこの作品のカギだよ。

確認プレビューしておこう 確認プレビューしておこう
真ん中で1秒止まったあと、そのまま右に向かって滑っていくようになった。

#3消える猫の登場

ok-scratch ok-scratch
消えない猫の動きができたから、次は「消える猫」を作っていくよ。やることはほぼ同じパターン。

準備

スプライト「きえる猫」を開く

きえる猫きえる猫
スプライトについて
下段を横切る猫スプライト。StayCatと同じ動きパターンで、より下の位置(y=-100)をスライドする。
どんな役割か
上の猫と同じように左から右へ横切るアニメーションを作るよ!こっちは下のラインを通るから、2匹が別々のルートを移動してるのがわかるね。2匹が同時に動くと面白い演出になるよ!

実装

step-2

消えない猫と同じようにイベントgreenflag が押されたときで始めて、左端(x:-255)から動き( ) 秒でx座標を ( ) に、y座標を ( ) に変えるで3秒かけて中央まで移動させるんだ。違うのはy座標が-100ってところだけで、画面の下のほうを通るルートだね。

確認プレビューしておこう 確認プレビューしておこう
消える猫も旗クリックで左端から真ん中まで3秒かけてスライドしてくるようになったね。

#4消える猫の退場

ok-scratch ok-scratch
消える猫にも退場アニメーションをつけよう。1秒待ってからx:300に向かってスライドさせるよ。
step-3

コードは消えない猫とまったく一緒なのに、消える猫は画面の右外まで行って本当に消えちゃう。

なんでかっていうと、消える猫のコスチュームには透明な四角形が仕込んであるから。消えるネコと消えないネコの青い枠線の位置に注目してくれ。Scratchから見た「見た目のサイズ」がデカいから、結果的に画面外にネコが消えたように見えるってこと。

ok-scratch ok-scratch
Scratchの画面端の処理には、コスチュームの「バウンディングボックス」っていう見た目の枠のサイズが重要になる。小さいコスチュームだとすぐ画面端で止められるけど、透明な矩形を足して枠を大きくすると、もっと遠くまで移動できるように見えるんだよね。結果、消えて見える。同じコードなのに動きが変わる――Scratchならではの裏技的テクニック。

確認プレビューしておこう 確認プレビューしておこう
消える猫も同じように真ん中で1秒待ってから、右にスライドしていく動きが追加された。

まとめ

同じコードなのに動きが変わるっていう不思議な体験、できたかな?コスチュームの透明バウンディングボックスが画面端の処理に影響するって知ると、Scratchでの表現の幅がグッと広がるよ。このテクニック、ゲームでスプライトを意図的に画面外に移動させたいときにも使えるから、ぜひ覚えておいてね!

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