Scratch ライブラリ（爆発エフェクト）

# Scratch ライブラリ（爆発エフェクト）

さて、Scratch ライブラリ化計画第 1 弾は、「**爆発エフェクト**」。派手な感じで第 1 弾として丁度良いかな、と。

ゲームを作るとき、いろんな場面でいろんなモノを爆発させると思いますが、そんなときに便利なライブラリ「**爆発エフェクト**」。[G-14 Great Fighter Jerrydog](https://scratch.mit.edu/projects/1042567369/) で使ったものですが、切り出す際、使いやすいように若干修正しました。

こんな感じで再利用可能な部品を作っていくと良いと思うんだ。

# 爆破エフェクト

## プロジェクト

ここにあります。
https://scratch.mit.edu/projects/1043731254/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/e22b12f0-ebaf-bab9-8599-406251b091a5.png)

## ライブラリ概要

要求に従って爆破エフェクト効果を出します。

* 指定された (x, y, z) 座標に指定された爆破のエフェクトを発生させます。
* 爆破エフェクトのパターンはあらかじめ 10 種類用意されています。
* 爆破音も 4 種類用意されています。

## 使い方

### 基本

本エフェクトを呼び出す場合は以下の手順に従います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/c11c9821-9339-c9fa-19e8-a735fa8f2944.png)

* 「爆破パターンリスト」に以下の順に値を追加する。
  * 爆破パターン番号
  * X座標
  * Y座標
  * Z座標
  * 大きさ
  * 明るさ
  * 爆破音
* 上記を設定したのち、「爆破エフェクト」のクローンを作ることで指定した値にしたがってエフェクトを発生させる。

### その他

1. Z座標で並び変えたい場合は、「Z軸並べ替え」イベントを利用してください。なお、これは並べ替えたいスプライト全てに同じコードを配置する必要があります。適宜既存のプログラムに適合させるか、本コードをコピーして対応してください。
    * Z軸での並べ替えについては 「[Scratch Tips（Z軸での並べ替え）](https://qiita.com/Kray-G/items/f6431e12f051fb11077d/)」 で少し説明しているのでこちらも参照してみてください。
2. Z座標が必要なければ 0 を指定しておけば OK です。
3. 「爆発エフェクト: Z軸接近対応」を 1 にすることで爆発しながら拡大するようになります。

## 各種情報

### 変数・リスト
> In: 他スプライト管理の値を参照／Out: 本スプライトで設定

|    変数リスト名    | In/Out |      概要      |
| ------------------ | :----: | -------------- |
| 爆破パターンリスト |   In   | 爆破情報キュー |

### イベント

なし

### コスチューム

| パターン番号 | 爆破イメージ |                  概要                  |
| :----------: | :----------: | -------------------------------------- |
|      1       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/cebbc60b-c6ea-8bbf-ef9e-c8b591443388.png) | 派手に燃えて爆発する感じ。             |
|      2       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/c0237ae4-f159-ce28-2139-095833afd6c1.png) | シンプルだが動きがある感じ。           |
|      3       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/6eabe36e-fd86-4ead-6947-44a79f66ba4c.png) | 薄く大きく破裂する感じ。               |
|      4       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/80ddc69e-8615-30cb-d706-d2f3b6699ced.png) | 大きく破裂する感じ。                   |
|      5       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/c42e235f-6193-6a79-3e78-43a966f426d4.png) | 派手に大きく爆発する感じ。             |
|      6       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/3ebfb248-2bef-6981-bf9d-0ca5ded60baf.png) | 派手に大きく青白く爆発。               |
|      7       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/5f9c0435-934b-8609-057a-0e4c2698502e.png) | モクモクと土けむりとともに爆発。       |
|      8       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/be21a4bf-9358-7592-e1f0-94eb8db7db74.png) | ピカッと遠くで爆発。                   |
|      9       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/3346c0da-ac36-f9d4-2e4a-308da176adbe.png) | バフンッと遠くで小さく爆発。           |
|      10      | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/30c5b59d-17f9-f739-15e0-693046099adb.png) | 爆発ではないがボゥッと燃え上がる感じ。 |

### 音

| 爆破音番号 |            概要            |
| :--------: | -------------------------- |
|     1      | 小さめで「ブフン」         |
|     2      | 小さめで「ボッ」           |
|     3      | ちょっと遠くで「バフーン」 |
|     4      | 大きく派手に「バハーン」   |

## 拡張ポイント

### 爆破コスチュームの追加

爆破コスチュームを追加する場合は、以下の手順に従います。

* 爆破コスチュームを追加した最初の番号と最後の番号をメモする。
* 初期設定の最後に、以下を追加する。
  * 「開始コスチュームリスト」に最初の番号を追加する。
  * 「終了コスチュームリスト」に最後の番号を追加する。
* 開始コスチュームリストと終了コスチュームリストは、それぞれのエフェクトのパターン番号に応じた最初と最後の番号が登録されるため、エフェクトのパターン番号がズレないように注意すること。

### 爆破音の追加

爆破音は番号で指定するのみであるため、単に音を追加することで爆破音として使用することが可能となる。

---

さて、どうでしょう。

基本 1 品モノみたいな Scratch World の中で、再利用可能な部品を増やして利用していく、というのは、プログラミングの学習という意味でも有益かとも思う。

プログラミング教育は別にプログラマを養成しているわけではないし、よく言われる「ロジカルな思考力」を育てるだけでなく、効率化や高品質といった側面に照らし合わせて、部品の再利用だったり、最初からそういうことを想定した設計をすることの大事さみたいなものもあり、それはプログラミングの世界に閉じないとも思うんだ。

ということで、この観点でいくつか記事が書けたらいいな、と思いました。で、こういうのがたくさん出そろってきた暁にはどこかから「Scratch 本でも書いてみません？」的なお誘いが来ないかと...（他力本願）

---

ご指摘などありましたら、ぜひコメントくださいませ～。

> [Scratch ライブラリと Scratch Tips 目次へ戻る](https://qiita.com/Kray-G/items/e1900d5b6c6dcfbe5321/)