- スターター作品
- なし
- 今回の完成サンプル
- なし
さぁ、スクラッチでナニ作る!?
コスチュームを瞬時に切り替えることで、Scratchのサイズ制限をすり抜ける発想が光っている。Scratchはコスチュームのピクセルサイズをもとに上限値を決める仕様で、空コスチュームに差し替えた瞬間だけ制限の基準が変わる。この一瞬のトリックをwarpモードで見た目に出ないまま完結させているところが効いている。どういう組み方でこれが成立しているのか、作り方を見ていこう。
動画で見てみよう
[talk]チャンネル登録して応援よろしく!チャンネル登録する[/talk]チュートリアルの元になった作品
[prj-embed prj="1306285813" mini="1" title="プレイしておこう" prj-title="スクラッチ小技:上限突破して大きくする" prj-author="ok-scratch"]今回の[prj-link prj="1306285813" title="スクラッチ小技:上限突破して大きくする" author="ok-scratch"]スクラッチを作る参考作品[/prj-link]です。[/prj-embed]今回の目標
スターター作品をリミックスしよう
このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード
#1普通のサイズ変更
[talk class="m-l-n"]まずは普通にりんごを大きくしてみよう。左矢印キーを押すたびにサイズが100ずつ増えていく仕組みを作るよ。[/talk]準備
スプライト「りんご」を開く
| スプライトについて |
|---|
| りんごのスプライト。サイズ変更の限界突破デモで使用する。 |
| どんな役割か |
| りんごを使ってScratchのサイズ制限を突破する仕組みを作るよ。左矢印キーで普通に大きくして、右矢印キーでコスチュームを切り替えるワザで上限を超えて巨大化できるようにしよう! |
実装
( ) キーが押されたときで左矢印キーを受け取って、大きさを ( ) ずつ変えるで大きさを100ずつ変えるシンプルなコード。でも何回か押してみると、あるところでりんごが大きくならなくなるんだ。これがScratchの「サイズ上限」ってやつ。
Scratchはコスチュームの元画像のピクセル数を見て自動的にサイズの上限を決めてて、もしこの制限がなかったら、スプライトを際限なく拡大できてしまいブラウザの描画が重くなる原因になる。だから小さいコスチュームほど、すぐ天井にぶつかっちゃうんだよね。
#2サイズの初期化
[talk class="m-l-n"]何度も試せるように、旗をクリックしたらサイズを元に戻す仕組みを入れておこう。[/talk]大きさを ( ) %にするで大きさを100%にリセットするよ。これでデモを最初からやり直したいとき、いちいちページを再読み込みしなくて済むってわけ。
#3上限突破のカスタムブロック
[talk class="m-l-n"]いよいよ本題、さっきの上限をぶち抜くワザを「サイズ上限を突破する」カスタムブロックとして定義するよ。「画面を再描画せずに実行する」をオンにしておくのがポイント。[/talk]準備
カスタム定義「サイズ上限を突破する」を追加
Scratchのサイズ上限を回避してスプライトを拡大するプロシージャ。コスチュームをからっぽに切り替えてサイズを変え、再びりんごに戻すことで制限を突破する。
実装
中身はコスチュームを ( ) にするでいったん「からっぽ」コスチュームに切り替えて、サイズを100増やしたら、すぐ「りんご」に戻すだけ。「からっぽ」は中身が空っぽの透明画像だから、Scratchが「小さいコスチュームだな」と判断してサイズ制限がゆるくなるんだ。画面を再描画せずに実行するから、一瞬の切り替えも見えないってわけ。
[talk]普通に大きさを ( ) ずつ変えるを使うと、コスチュームのピクセルサイズを基準にScratchが上限をかけてくる。でもこのトリックは、サイズを変える瞬間だけ空コスチュームに差し替えて制限を回避してるんだ。アークションゲームや弾幕シューティングゲームのパーティクルや弾幕の演出で使ってるテクニックでもあるよ。[/talk]
#4上限突破を実行
[talk class="m-l-n"]作ったカスタムブロックを右矢印キーで呼び出せるようにしよう。[/talk]( ) キーが押されたときで右矢印キーを受け取ったら、「サイズ上限を突破する」を呼び出す。これで左矢印が普通のサイズ変更、右矢印が上限突破バージョンっていう比較ができるようになったよ。左を何回か押して止まったら、右を押してみて——上限を超えてりんごがどんどん巨大化していくのが確認できるはず。
[talk]「スプライトをそんなに大きくする場面ある?」って思うかもだけど、意外とあるんだよね。ズームイン演出、巨大ボスの登場、パーティクルを大きく散らすエフェクトとか。このテクニックを知ってるかどうかで、Scratchでの表現の幅がけっこう変わってくるよ。ちなみに小さくするときも同じ方法で限界よりも小さくできるよ〜。[/talk]
まとめ
コスチュームを一瞬だけ空のものに切り替えるだけで、Scratchのサイズ制限をぐるっと回避できるのが面白いよね。こういう「仕様の隙間を使うワザ」って好き。ズームイン演出や巨大ボスの登場シーンで、ぜひ使ってみてね!