ファイブボックス一分間スクラッチ講座アイキャッチ画像
ファイブボックス一分間スクラッチ講座アイキャッチ画像

一分間スクラッチ講座 スクロール5クローンで作成されたスプライトの幅を自動で取得する方法 - ファイブボックス

一分間スクラッチ講座 スクロール5クローンで作成されたスプライトの幅を自動で取得する方法

このブログテーマでは、スクラッチの初心者から上級者まで、ちょっとお役に立つ情報を不定期で紹介していきます。

作成済みのプロジェクトでは、複数のブロックをクローンで作成し、任意の初期位置に配置、スクロールで左右に移動する仕組みを作成しています。最初から作りたい場合は、下記の記事をご参照ください。

スクロールの作成 第1弾 相対的な移動を作成する方法
スクロールの作成 第2弾 超簡単 天井跳ね返りの修正
スクロールの作成 第3弾 クローン機能でスクロールで移動する足場を複数作成
スクロールの作成 第4弾 クローンで作成されたブロックの表示、非表示コントロール

ここまでの作品で、複数のクローンがそれぞれの表示非表示されるべき境界線で表示されたり、隠れたりする仕組みができました。ただコスチュームが多くなった時、それぞれのコスチューム幅をリストに登録するのは面倒ですよね。

今回は、それぞれのコスチューム幅を自動で取得する方法をご紹介いたします。

今回の完成作品を共有しますので、イメージがつかめない場合は以下をご参照ください。

下の動画は不定期配信の「ファイブボックス 一分間スクラッチ講座」です。ご興味のある方は併せてご参照ください。

スプライトの幅の取り方

まず、スプライトの幅の取り方の考え方ですが、下の図をベースにフローを説明します。

  1. スプライトを画面中心(x=0,y=0)に配置、この時スプライトが画面端に触れていないのが条件です。
  2. 右端に触れるまでx座標を1ずつ移動させます。
  3. 241-x座標(下図の?部分)がスプライトの幅の半分になります。
  4. その値を2倍にすればスプライトの幅になります。
スプライトの幅の取り方の説明図

ブロック定義で幅を取得

上で確認したフローは、コスチュームの数だけ実行します。超高速で実行するために、ブロック定義の「画面を再描画せずに実行する」にチェックを入れてブロックを作ります。

ブロック名は「はば取得」など、なんでも結構です。

ブロック定義の作成

ブロック定義内での処理は以下のようになります。

  1. リスト:はば の要素を全て削除
  2. 1番目のコスチュームを選択
  3. ずっと以下の処理を実行(コスチュームの数だけ、コスチューム数は変動)
    1. 座標をx、yともに0に指定
    2. 端に付くまでx座標をずつ移動
    3. スプライト幅(241-x座標)×2 をリスト:はば に追加
    4. コスチュームを次のコスチュームに更新
    5. もしコスチュームが1番目に戻っていたら処理中断
ブロック定義の作成

作成したブロック定義は、クローンを作成する直前に呼び出します。

ブロック定義の呼び出し

はい、これでブロックが何種類もあった時で、自動で幅を取得することができます。

ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。

ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。

TOP