![](https://omouga-mama.com/wp-content/uploads/2021/04/cropped-arisu30.png)
スプライトの複製を簡単に作ってくれるクローン機能。
便利なようで使いどころが難しいと思ったことはないでしょうか。
理由は、作成したクローンは他のクローンを区別ができない。
クローン個別に違うプログラムを作ることができない。
こんなクローンをうまく活用するにはどうしたらいいのでしょうか。
![](https://omouga-mama.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
![](https://omouga-mama.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
![](https://www10.a8.net/0.gif?a8mat=3T6MQL+A4YQLU+4380+HWXLD)
![](https://www10.a8.net/0.gif?a8mat=3HR4JZ+F6JY42+E0Q+1BNJ9D)
![](https://www10.a8.net/0.gif?a8mat=3HR4JZ+F5D2WI+4OM0+5Z6WX)
![](https://www19.a8.net/0.gif?a8mat=3HR4JZ+F75DPU+3ZMA+5ZEMP)
クローンの作成方法
まずはクローンの作り方から解説します。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-24.png)
スプライトのクローンを作成するためには、「自分自身のクローンを作る」を使います。
クローンを作ると、まったく同じプログラムや変数を持ったスプライトのコピーを作ることができます。
ただし、プログラム実行されている最中(動的)に作るため、画面下のスプライトエリアには1つのスプライトしか表示されません。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-25.png)
※プログラムを実行すると、複数(図では4個)のスプライト1が表示されますが、画面下ではスプライト1は1個しか表示されていません。
クローンを作ったときに気を付けてほしいことがあります。
クローンは自分自身のスプライトの上に重ねて作られるのでパット見た目では気づけません。
気を付けてください。
クローンを作った後は、スプライトの座標を変更するとよいでしょう。
クローンを作るメリット
クローン機能を使うとスプライトを簡単にコピーできます。
クローンを使わない場合、画面に表示したいスプライトが10個あるなら、10個スプライトを作って、それぞれにプログラムを作る必要があります。
しかし、同じような動きをするスプライトであればクローン機能を使うことができます。
例えば、ゲームで敵を10個出したい場合を考えましょう。
同じような動きをするスプライトを10個作るのは大変です。
ゲームによっては、もっと多くの敵を出したいかもしれません。
こんな時、クローンを活用すれば敵を量産できます。
クローンのデメリットというか難しさ
一見便利そうなクローンですが扱いが難しいところがあります。
プログラムの部分もコピーされ、同じプログラムが実行されるので、同じ動きをします。
クローンが作られる場所もコピー元に重なって作られます。
コピー元のスプライトに重なって同じ動きをするので、クローンを作っても1個にしか見えない場合もあります。
クローンは作っただけではうまくいかなさそうです。
クローンという機能をうまく使って、プログラム作成を楽するためにはどうしたらいいでしょうか。
クローンを区別して違う動きをさせる
クローンをうまく活用するには、クローンを区別してそれぞれ違う動きをさせるとよいと考えました。
まず、クローンを区別する方法です。
※やり方はいろいろ考えられますので、一つの例です。
クローンを区別できるようにする
変数「このスプライトのみ」を使って、スプライトごとに個別番号を持たせることができます。
例えば、次のような作り方をします。
2つの変数を用意します。
変数名「クローン数」を「すべてのスプライト用」で作ります。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-26.png)
「すべてのスプライト用」で作成すると、他のスプライトやクローンから供用できる変数になります。
もう一つは
変数「クローン番号」を「このスプライトのみ」で作ります。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-27.png)
「このスプライトのみ」で作成すると、他のスプライトやクローンからは見たり、登録したりできない変数になります。
同じ名前ですが、スプライト、クローンごとに違う変数として使うことができます。
クローンが作られるたびに「クローン数」1づつ増やします。
その「クローン数」を「クローン番号」に登録します。
すると、クローンが持っている「クローン番号」にはクローンごとに違う値を持たせることができます。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-28.png)
このプログラムを使って、クローンがそれぞれ違う値を持っていることを確認してみましょう。
クローンを5回作って、それぞれのクローンの「クローン番号」を表示するプログラムを作ってみます。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-29.png)
実行すると、クローンごとに違う値を持っていることがわかります。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-30.png)
クローンに違う動きをさせる
クローンに異なる動きをさせるにはどうしたらいいでしょうか。
簡単な方法としては、クローンを作る座標と作るタイミングを変えることです。
これだけでも、クローンが独立して動いているように見えます。
しかし、同じプログラムを実行しているので動きのパターンは同じです。
もっと劇的に違う動きをさせる方法を考えてみます。
先ほど、クローンを区別する方法を考えました。
ここで使った「クローン番号」を使います。
クローン番号によって違うプログラムが実行されるようにします。
「もし〇なら」を使ってみます。
![](https://omouga-mama.com/wp-content/uploads/2022/04/image-4.png)
「クローン番号」で条件分岐を作っていきます。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-31.png)
この様にクローン番号によって違うプログラムが作れるようにします。
例えばこのようなプログラムを作ってみました。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-32.png)
これを実行すると、クローンがそれぞれ違う方向を向いています。
異なるプログラムが実行できたことがわかります。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-33.png)
欠点としては、条件分岐を使っているのでクローンが多くなればプログラムが長くなって読みにくくなることです。
さいごに
いかがだったでしょうか。
使えそうで使いにくいクローンを活用する方法を考えてみました。
もっといい方法があるかもしれません。
考えてみてください。
今回のプログラムではクローンの数だけ条件分岐を作成しました。
しかし、何個クローンを作るのか決まっていない場合もあります。
そのような時は条件を工夫しましょう。
このような条件にすれば5つ条件のどれかに当てはめて動作させることができます。
![](https://omouga-mama.com/wp-content/uploads/2022/08/image-34.png)
![](https://omouga-mama.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
![](https://omouga-mama.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
![](https://www10.a8.net/0.gif?a8mat=3T6MQL+A4YQLU+4380+HWXLD)
![](https://www10.a8.net/0.gif?a8mat=3HR4JZ+F6JY42+E0Q+1BNJ9D)
![](https://www10.a8.net/0.gif?a8mat=3HR4JZ+F5D2WI+4OM0+5Z6WX)
![](https://www19.a8.net/0.gif?a8mat=3HR4JZ+F75DPU+3ZMA+5ZEMP)
コメント