コスチュームを自動でカウントするぞ(うちの服も数えてほしい…)

ok-scratch

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

コスチューム番号に0を指定すると最後のコスチュームにジャンプするScratchの隠し仕様を学ぼう。グリフパッチも使うこのテクニックで、コスチューム総数を自動取得できる。

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

コスチューム番号に0を指定すると末尾に巻き戻るというScratchの仕様と、四捨五入ブロックへの空入力が0を返す仕様を重ねた設計が光っている。コスチュームを1枚追加しても枚数カウントが自動で更新される仕組みは、この2つの仕様を組み合わせた発想から生まれている。グリフパッチがフォント描画に応用した「小技」を、手を動かしながら理解していこう。

動画で見てみよう

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

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

今回の目標

switch costume to(四捨五入ブロックの空入力)を使って、コスチューム番号0のラップアラウンド仕様を活用し、スプライトが持つコスチュームの総枚数を自動取得する仕組みを作る。

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

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

#1コスチューム0の裏技

ok-scratch ok-scratch
たった数ブロックで、スプライトのコスチュームが何枚あるか自動でわかる裏技を作るよ。まず「待機」コスチュームに切り替えて、今のコスチューム番号を吹き出しで確認しよう。

準備

スプライト「マリオ」を開く

マリオマリオ
スプライトについて
全コスチュームを順番に切り替えて枚数を数え、結果を表示するスプライト。
どんな役割か
マリオのコスチュームを全部チェックしてみよう!走ったりジャンプしたりいろんなポーズが何枚あるか数えて、最後にまとめて教えてくれるよ。

実装

step-0

ここからが核心。見た目コスチュームを ( ) にする演算( ) を四捨五入を入れて、あえて入力欄を空っぽにしておくんだ。四捨五入の入力が空だと0が返ってくるから、「コスチューム0番に切り替えろ」という命令になる。

ok-scratch ok-scratch
Scratchではコスチューム0番は存在しないんだけど、0を指定すると一番最後のコスチュームにジャンプする仕様があるんだ。23枚のコスチュームがあるスプライトなら0番で23番目に飛ぶ。グリフパッチはこの「ラップアラウンド」をフォント描画システムで使って、文字コスチュームの総数を自動取得しているよ。

#2枚数を記録する

準備

変数「★コスチューム枚数」を追加

全コスチュームを数えた結果を格納するグローバル変数

変数「★コスチューム枚数」を追加

実装

step-1

コスチューム0の裏技で末尾に飛んだから、今の見た目コスチュームの ( )がそのままコスチュームの総数。吹き出しで確認してみよう。

変数( ) を ( ) にするで「★コスチューム枚数」変数にその番号を保存したら、見た目次のコスチュームにするで次へ進むよ。末尾の次は先頭に戻るから、コスチューム1番に巻き戻る。もう一度吹き出しで番号を表示して、ちゃんと先頭に戻ったことを確認するんだ。

ok-scratch ok-scratch
ちなみにこの「末尾の次は先頭に戻る」仕組みは、コスチュームアニメーションの基本。見た目次のコスチュームにするをずっと繰り返すだけで走りモーションがループ再生されるのは、コスチュームが自動で巻き戻るおかげ。だからコスチュームの並び順ってめちゃくちゃ大事だよ。

普通はコスチュームの枚数を手動で数えて直接書き込むところだけど、この方法ならコスチュームを追加・削除しても自動で正しい枚数が取れる。この仕組みがなかったら、コスチュームを1枚足すたびに枚数を手で直さなきゃいけないよ

確認プレビューしておこう 確認プレビューしておこう
旗を押したら、コスチューム番号0で一気に最後のコスチュームまで飛んで、その番号がコスチューム枚数に入ったね。

#3結果発表

step-2

カウントの仕組みができたから、あとは結果を見せるだけ。見た目( ) と言うで「★コスチューム枚数」の値を含んだメッセージを表示して完成だよ。演算( ) と ( )でテキストと変数の値をつなげて1つの文章にしているんだ。

四捨五入の空入力で0を作るテクニックと、コスチューム番号0のラップアラウンド――この2つを組み合わせた、Scratchの仕様を知り尽くした小技だよ。

まとめ

四捨五入の空入力で0を生み出して、コスチューム番号0のラップアラウンドをトリガーする――知らなきゃ絶対思いつかない小技だよね。一度覚えたらフォント描画みたいな大きな仕組みにも応用できるから、グリフパッチがなぜこれを使うのか、ちょっとだけ見えてきたんじゃないかな。

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