ブログタイトル


Scratchのプロジェクトで、スコアをつけたいとき
みなさんはどうしていますか?

変数を作って、変数のよこのチェックボックスにチェックをいれると
ステージに変数の中身が表示されるので
それをつかってスコアを表示しているかたが多いと思います。

WS000003


でもこのままだと、なんだかシンプルすぎてそっけないですよね。
自分の好きなフォントでスコアを表示できれば
ゲームもかっこよく見えますよ!

こちらにサンプルのプロジェクトをつくりましたので、これを使って説明[せつめい]していきます。
https://scratch.mit.edu/projects/107590185/
WS000001


Scratchでかっこいいフォントを使ってスコアを表示したい



オリジナルのフォントを作るには

ウィンドウズに標準[ひょうじゅん]で入っている「ペイント」を使います。
WS000002

ペイントでなくてもお絵かきできるツールならなんでもOKです。

Windows8なら、スタートメニューの中に入っていると思います。
WS0303

Windows8以前[いぜん]なら、 「スタート」→「すべてのプログラム」→「アクセサリ」→「ペイント」です。

ペイントを開いたら、まっしろなキャンバスになっていると思います。
まずはサイズを[]えましょう。

WS0304

ウィンドウの左上あたりに「サイズ変更[へんこう]」というボタンがありますのでクリックします。

WS0305

サイズ変更[へんこう]のウィンドウが開きます。

まず「縦横比を維持する」のチェックを外しましょう。

単位を「ピクセル」にして、ヨコ500ピクセル×タテ500ピクセルぐらいにします。
シンプルな形にするなら、100×100くらいでもOK!

(このサイズはベクター画像に変換するためのサイズなので
png画像のまま使うなら、もっと小さいサイズでもOKです。20×20とか…)

できたら「OK」をおしてペイントに戻ります。

WS0306

サイズがきまったら、数字をかきます。
エンピツツールとバケツツールを使って、いい感じに描きましょう。

いっぺんに全部の数字を描くのではなく
1つの画像ファイルにつき、1文字ずつ描きます。

WS0308

数字がかけたら保存しましょう。
「Ctrl + S」キーを押すか、ペイントの左上にある「ファイル」から
「名前をつけて保存」をえらびましょう。

画像ファイルは何でもいいですが、今回はpngにします。

名前は「1.png」にしました。

ベクター画像に変換しよう

pngで画像がつくれたら、拡大縮小してもキレイな「ベクター画像」に変換しましょう。

このサイトにアクセスして下さい。
ラスタ画像svg化スクリプト「potrace.js」

ここで、png画像からベクター画像に変換することができます。

WS0309
 
先ほど作った、「1.png」の画像を
「ここに画像をドロップ」という部分まで、マウスでドラッグして、はなします。

WS0310
png画像を左のウィンドウに入れると、こんな感じになります。
ここで、右下の「実行」ボタンを押しましょう。

線と塗りを分けたい時は、こちらの方法で試してください。
関連記事:手書き画像をベクターにしてScratchで表示してみよう 


WS0311

すると「実行」ボタンの左側に[svg]というリンクが現れます。

このリンクを右クリックして「名前をつけてリンク先を保存」というメニューを選びましょう。

WS0312
 
svgファイルに好きな名前をつけます。
今回は「1.svg」という名前で保存します。

これで、png画像からsvg画像へ変換することができました。


ベクター画像をScratchに取り込もう

作ったベクター画像(svg)をScratchに取り込みましょう。

WS0313

まずは、スプライトリストから「新しいスプライトを追加」で 筆マークをクリックします。
するとからっぽのスプライトができるので
コスチューム編集画面から「新しいコスチューム 」のなかの
フォルダアイコンをクリックします。

WS0314

さきほど作った「1.svg」を開きます。

WS0315

取り込んだ画像がめちゃくちゃでかいので小さくします。
コスチュームを縮小ボタンで小さくしてもいいですし
「大きさを○%にする」のブロックで小さくしてもいいです。

大きさブロックのほうが楽ちんですね。

からっぽの「コスチューム1」は消しておきましょう。

この作業を10回繰り返します。(数字の0~9まで)
めちゃくちゃめんどくさくないですか?

皆さんが何気なく使っているフォントは(こんな作り方じゃないですが)
1文字1文字 てまひまかけて作られています。
すごいですよね。


さて、出来上がったものがこちらになります。
https://scratch.mit.edu/projects/107590185/#editor

WS0318
 
コスチュームの名前は、数字と同じにしておきましょう。
1の画像は「1」という名前のコスチュームにします。 

画像をつかってスコアを表示しよう

サンプルのプロジェクトのなかの数字のスクリプトを見てみましょう。

WS0320
 number1というスプライトです。


「スコア変数」の中に、スコアが入っていて
スコア変数の中身を確認しながら、スタンプしていっています。

WS0321

 ためしに、ステージにある「スコア」のスライダーをドラッグで動かしてみて下さい
すると「スコア変数」の中身がかわり
左上のスコアの数字もかわります。 


では、スクリプトを詳しくみていきましょう。
WS0319
 
スクリプトはこんな感じになっています。

数字は1ケタずつクローンしてもいいんですが
クローンはパソコンによってはすごく動作が重くなるので
今回はスタンプにしました。

変数「i」はループカウント用の変数です。
繰り返しのなかで1ずつふやしていて、
スコアの何文字目を表示すればいいかを指定します。 

スコアは1秒ごとに更新していますが
このへんはゲームの設定により変えて下さい。

再描画しない設定でチラつきをなくす

今回「定義ブロック」を使ったのにはわけがあります。
ふつうに、定義ブロックを使わずにスコアをスタンプすることもできますが
そのままだと、スコアをスタンプするたびに
スコアの部分がチラつくようになっていまします。

これはスタンプするときに「再描画」が行われているためです。
1文字スタンプするごとに1回画面がリフレッシュされるので
4桁あれば、4回再描画することになります。

再描画


コンピュータは計算は速いのですが、描画するのは少し苦手です。
なので「処理が終わるまでは、画面を再描画しない」
という設定をしてあげると、高速で処理が終わった後に、1回だけ描画すればよいので
画面のチラつきをなくすことができるのです。

WS0322

画面を再描画しないためには、「定義ブロック」のオプションを使います。

その他のカテゴリから「ブロックを作る」ボタンをクリックします。
新しいブロックを作るウィンドウが開いたら
「▼オプション」をクリックし、「画面を再描画せずに実行する」にチェックを入れます。

これで、この定義ブロック内にかかれたスクリプトは
定義ブロックが終わるまでは、再描画されなくなります。

バックパックに入れていつでもつかえるようにする

スプライトは、バックパックに入れておけば、他のプロジェクトを作るときにも
さっと取り出して使うことができるので便利です。
スクリプトも一緒にコピーされるので、スコアの数字をバックパックにいれておけば
いつでもすぐに使うことができます。

WS0324
 
まず、スクリプト画面の下の方にある
「バックパック ▲ 」とかかれた部分の▲をクリックします。


WS0323
 
バックパックが開いたら、保存しておきたいスプライトをドラッグして
バックパックの中に入れましょう。

WS0326

ほかのプロジェクトで使いたい時は
まず「スコア」変数を用意してから…
(スコア変数はほかのスプライトから操作できるように
「すべてのスプライト用」で作りたいのであらかじめ用意しておく)

WS0325

スコア変数ができたら、バックパックにいれておいた数字のスプライトを
スプライトリストのなかにドラッグ&ドロップします。

これで、ゲーム内でスコア変数の中身をかえてあげるだけで
スコアが表示されるようになりました。

スコアの表示場所はゲームによって変わると思いますので
そのつど設定してあげて下さいね。


さいごに

今回は、SVGに変換したり、定義ブロックをつかったり、バックパックをつかったり
普段使わない要素がいろいろあったと思いますが
どれも便利な機能なので、おぼえて使ってみて下さい。

オリジナルフォントができたら、ぜひ見てみたいので、教えて下さいね。