このブログテーマでは、スクラッチの初心者から上級者まで、ちょっとお役に立つ情報を不定期で紹介していきます。
作成済みのプロジェクトでは、複数のブロックをクローンで作成し、任意の初期位置に配置、スクロールで左右に移動する仕組みを作成しています。最初から作りたい場合は、下記の記事をご参照ください。
ここまでの作品で、複数のクローンがそれぞれの表示非表示されるべき境界線で表示されたり、隠れたりする仕組みができました。ただコスチュームが多くなった時、それぞれのコスチューム幅をリストに登録するのは面倒ですよね。
今回は、それぞれのコスチューム幅を自動で取得する方法をご紹介いたします。
今回の完成作品を共有しますので、イメージがつかめない場合は以下をご参照ください。
下の動画は不定期配信の「ファイブボックス 一分間スクラッチ講座」です。ご興味のある方は併せてご参照ください。
1,スプライトの幅の取り方
まず、スプライトの幅の取り方の考え方ですが、下の図をベースにフローを説明します。
スプライトを画面中心(x=0,y=0)に配置、この時スプライトが画面端に触れていないのが条件です。
右端に触れるまでx座標を1ずつ移動させます。
241-x座標(下図の?部分)がスプライトの幅の半分になります。
その値を2倍にすればスプライトの幅になります。
2,ブロック定義で幅を取得
上で確認したフローは、コスチュームの数だけ実行します。超高速で実行するために、ブロック定義の「画面を再描画せずに実行する」にチェックを入れてブロックを作ります。
ブロック名は「はば取得」など、なんでも結構です。
ブロック定義内での処理は以下のようになります。
リスト:はば の要素を全て削除
1番目のコスチュームを選択
ずっと以下の処理を実行(コスチュームの数だけ、コスチューム数は変動)
座標をx、yともに0に指定
端に付くまでx座標をずつ移動
スプライト幅(241-x座標)×2 をリスト:はば に追加
コスチュームを次のコスチュームに更新
もしコスチュームが1番目に戻っていたら処理中断
作成したブロック定義は、クローンを作成する直前に呼び出します。
はい、これでブロックが何種類もあった時で、自動で幅を取得することができます。
ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。
コメント