【スクラッチ】”隠す”と”クローン削除”ブロックの違い

ステージ1をクリアしたら次のステージ2に進むというゲームを作る時に
意外に多くの問題に直面しました。

原因は”隠す”と”クローン削除”の使い分けを正しく理解していなかったからでした。

すぐに解決できる問題としてスクリプトを見直していましたが、
原因を究明するのに結構な時間を要してしまったんですね。

そら先生そら先生

解っていないと大変ですよ。

 

次のステージへ進むゲームを作る時の注意点

ここでは”隠す”と”クローン削除”のブロックの使い分けを理解しやすいように
ポイント毎にご説明をしていきますね。

次のステージの画面の問題
ガイコツが重なっている

まずは、具体的な問題点とは、なんだったのか?

  1. ステージ2になった時に、敵のクローンが重なっている様子に見える。
  2. ステージ2になると、スコアが思い通りにカウントされない。
  3. そもそもステージ2が始まらない。

最初は何がなんだか、全く原因が全くわかりませんでした。

その原因とは?

1.ガイコツをやっつけた時に”隠す”のブロックで消したが、ステージ2でクローンを作る際、隠れていたガイコツのクローンもクローンされて、同じ所に6体のガイコツが作成されることになった。

2.クローンのクローンを作ることでステージ2では6倍の数のガイコツが出現しスコアは無茶苦茶。

3.”隠す”のブロックの代わりに”クローン削除”をつかったら”次のステージへ”のメッセージを出すクローンがいなくなりメッセージを出せなくなった

 

”隠す”のブロックで消したスプライトは実は消えていない

起こっている現象をシンプルに理解できるように
簡単なプログラムを作ってみました。

クローンされたネコ(3匹)をクリックしたら”隠す”
その時にスコアは1つカウントされて
スコアが3になったら、また3匹のクローンをつくる

下の動画でも説明をしていますが、
内容について簡単な説明をしておきますね。

要約説明

”隠す”のブロックを使ってクローンネコを消しても、このスクリプトでは”自分自身のクローンをつくる”のメッセージで消えているネコが自分のクローンを作ってしまう。*条件があります

このスクリプトの場合、”クローンを作る”を3回繰り返すので、オリジナルの1匹とクローンの3匹がそれぞれ3匹のクローンを作り、結果12匹のクローンが作られてします。

クローン作製の前に、X座標を-100にそろえるので、クローン後の配置場所が同じになって重なってしまうので、見た目は問題がなさそうに見える。

”隠す”のブロックを使っても実際には消えずにクローンを作ってしまう事が解ったので、このケースでは”クローン削除”のブロックを使うのが良い

*このスクリプトでは”メッセージ(配置開始)を受取ったとき”のブロックの下に、”自分自身のクローンを作る”を置いています。メッセージのブロックはイベントという種類のブロックオリジナルにもクローンにも両方のスプライトを対象として指示を出すブロックなので、このスクリプトのケースでは隠れたクローンが反応をしています。

また、クローンがクローンをするのを変数を使って防ぐ方法もあります。

以上を踏まえて、動画の説明を聞くと解りやすいかもしれません。

 

消したはずのクローンが復活したり、
消えているクローンがビームを出して攻撃してきたり
いろいろな問題が色々とでてくることがあります。

問題が起こったら、
どのブロックが原因かを考えながら見直してくださいね。

”クローンを削除する”を使ったことで、次のステージが始まらない

ここまでで消したはずのクローンのいたずらを防ぐためには
”このクローンを削除する” を使うのが良いという説明をしましたが
常に使うのが正解とも限らないんですね。。。。。。。

生徒さんA生徒さんA

どんな時に問題がありますか?

動画の説明を最後まで確認してくれた方は、
もう理解をしてくれていると思いますが、
もう一度 説明をしますね。

クローンを削除して困る事

ネコのプログラムの後にガイコツのプログラムを使って説明をしていますが、
ガイコツをすべて消した(ガイコツの数=0)らステージ2を始めるための”スタート”のメッセージを送っています

スタートのメッセージを送るブロックは”クローンをされたとき”のブロックの下に組み込まれています。

この”クローンをされたとき”のブロックはスプライトのクローンに対する指示をするブロックです。

ですから、クローンが削除されて本当に一つもなくなってしまったら、このスタートのメッセージを送る事が出来ないのです。

クローン削除を使うのがNG

解決の方法としては、

クローンをいきなり削除するのではなく”隠す”にしておいて
見えないクローンからスタートのメッセージを受けてから
ステージ2が始まる時に”クローンを削除する”とするのが良いですね。