スクラッチでブロック崩しを作るとしたら、皆さんはどんなスクリプトを想像しますか?
ブロックのスプライトをたくさん置いて、ボールに当たったら消したり
スプライトのクローンを並べて、当たり判定をとるなどを考えるのではないでしょうか?
今回は、ブロックのスプライトをまったく使わないブロック崩しを紹介します。
Atari Breakout HD

実際にプレイしてみると、普通のブロック崩しとかわらないようにみえますね。
ではスクリプトはどうなっているのでしょうか?
「中をみる」で確認してみましょう。
このようにブロックの画像は背景に描かれていますね。

スプライトを使わないでブロックを作っていますので
背景を直接消すことはできません。
また、背景も1枚しかありませんので、この背景をきりかえる方法でもなさそうです。

スプライトリストから「Ball(ボール)」を選んでみましょう、
ボールの当たり判定のスクリプトはこのようになっています。

「Paddle(パドルはボールを操作するバーのこと)」に当たったときに向きを変える。
そして「ブロックの色にふれた」ときにスコアをプラスして向きを変える。
当たり判定の部分に、ブロックを消すロジックは含まれていないようです。
念のためほかのスプライトも見てみましょう。

当たり判定以外には、10歩動かす+跳ね返るブロックと
画面の下に置かれた「DeathZone(デスゾーン)」というスプライトに当たると
点滅して消える、というスクリプト。
ここにもブロックを消すロジックは入っていません。

カンの良い人はもうわかったのではないでしょうか?
なかのスクリプトを見てみましょう。

なかはとてもシンプルですね。
そう、ブロックを消すために「スタンプ」を使っていたのでした。
このスプライトはずっとボールについていきます。
(x座標とy座標を22分割してブロックが消えているように演出)
そのあと、スタンプを押して黒背景とおなじ色にし、消えているようにみせていたのですね。
スプライトの上にスタンプすることができない
スタンプするスプライトが、他のスプライトの上にきていたとしても
スタンプするとかならず下になってしまいます。
並び順としては、背景→スタンプ→スプライト の順になります。
スプライトを「隠す」にしていてもスタンプできる
いちいち「表示する」しないでいいので便利ですね。
クローンより動作が軽い
これがスタンプの最大の利点といってもいいと思います。
以前紹介したRPGのセリフを表示するスクリプトもスタンプを使っていますが
これをクローンでやろうとするととても重くなります。
クローンはパラメータやスクリプトなどすべてをコピーするので
たんなるスタンプよりも重くなってしまうのです。
マップを作るときなども、全部スタンプにして移動したときにリフレッシュするほうが軽かったりします。
スプライト同士の当たり判定はできない
スタンプした時点で背景と同じ単なる「画像」ですので
<スプライトに触れた>の当たり判定はできません。
色での当たり判定か、座標を保存しておいて当たり判定をするなどの方法があります。
色々な絵を描いて、ステージをふやしていっても面白いですね。
ぜひあなただけのオリジナルステージを作ってみて下さい。
ゲームの描画部分に一番近いのがペンやスタンプです。
計算で絵を描くのはなかなかむずかしいですが
マルや四角など、身近な図形からチャレンジしてみると良いかもしれませんね。
この記事がよかった!という方は「B!」ボタンや
ブロックのスプライトをたくさん置いて、ボールに当たったら消したり
スプライトのクローンを並べて、当たり判定をとるなどを考えるのではないでしょうか?
今回は、ブロックのスプライトをまったく使わないブロック崩しを紹介します。
Atari Breakout HD

実際にプレイしてみると、普通のブロック崩しとかわらないようにみえますね。
ではスクリプトはどうなっているのでしょうか?
「中をみる」で確認してみましょう。
ブロックは背景に描く
「背景」をクリックしてみるとこのようにブロックの画像は背景に描かれていますね。

スプライトを使わないでブロックを作っていますので
背景を直接消すことはできません。
また、背景も1枚しかありませんので、この背景をきりかえる方法でもなさそうです。
ボールの当たり判定
やはりボールとの当たり判定のところにヒミツがあるのでしょうか?
スプライトリストから「Ball(ボール)」を選んでみましょう、
ボールの当たり判定のスクリプトはこのようになっています。

「Paddle(パドルはボールを操作するバーのこと)」に当たったときに向きを変える。
そして「ブロックの色にふれた」ときにスコアをプラスして向きを変える。
当たり判定の部分に、ブロックを消すロジックは含まれていないようです。
念のためほかのスプライトも見てみましょう。

当たり判定以外には、10歩動かす+跳ね返るブロックと
画面の下に置かれた「DeathZone(デスゾーン)」というスプライトに当たると
点滅して消える、というスクリプト。
ここにもブロックを消すロジックは入っていません。
ブロックを消すためのスプライト
スプライトリストの中に、「MarkOut(マークアウト)」というスプライトがありますね。
カンの良い人はもうわかったのではないでしょうか?
なかのスクリプトを見てみましょう。

なかはとてもシンプルですね。
そう、ブロックを消すために「スタンプ」を使っていたのでした。
このスプライトはずっとボールについていきます。
(x座標とy座標を22分割してブロックが消えているように演出)
そのあと、スタンプを押して黒背景とおなじ色にし、消えているようにみせていたのですね。
スタンプについてのまとめ
スタンプは、ほかのスクリプトとちがい、いくつかの特徴があります。スタンプするとかならず下になってしまいます。
並び順としては、背景→スタンプ→スプライト の順になります。
以前紹介したRPGのセリフを表示するスクリプトもスタンプを使っていますが
これをクローンでやろうとするととても重くなります。
クローンはパラメータやスクリプトなどすべてをコピーするので
たんなるスタンプよりも重くなってしまうのです。
マップを作るときなども、全部スタンプにして移動したときにリフレッシュするほうが軽かったりします。
<スプライトに触れた>の当たり判定はできません。
色での当たり判定か、座標を保存しておいて当たり判定をするなどの方法があります。
さいごに
今回のブロック崩しは背景に直接ブロックが描いてあるので色々な絵を描いて、ステージをふやしていっても面白いですね。
ぜひあなただけのオリジナルステージを作ってみて下さい。
ゲームの描画部分に一番近いのがペンやスタンプです。
計算で絵を描くのはなかなかむずかしいですが
マルや四角など、身近な図形からチャレンジしてみると良いかもしれませんね。
この記事がよかった!という方は「B!」ボタンや
コメント
コメント一覧 (1)