ブロック崩しゲームを題材に以下の項目を扱う
ゲームステージを表現するデータ構造とステージ構築コード
アニメーション処理(直列と並列)
アニメーションの同期処理について
衝突判定と衝突方向の検出
物理エンジンを用いない簡易的な手法
Webclassの資料(課題(1/2)のファイル)のブロック崩しのコードを組み立てて動作確認をする。
改造できるところを幾つか探してアレンジする。
ファイルメニューから保存して、XMLファイルをWebclassにアップロードする。
改造した内容を「コメント」で説明する。コメントはSnap!のコードに書くこと。
前回も今回もコード量が多いのでiPadで取り組むと操作で苦戦するかもしれません(やってみたけど出来ないことはない)
iPadで取り組む際は、歯車アイコンのメニューからブロックサイズを拡大して調整すると多少操作しやすくなります。
その他、ステージやブロックの領域のサイズを調整して頑張ってください。
ブロックの右クリックメニューはiPadではブロック長押しで出ます。
ballのスプライトのコードを編集する
ボールの反射方向の判定と反射角度の計算部分を組み立てる。
変数ブロックの下の方にあるカスタムブロックcollisionを右クリックして、ブロックエディタから編集する。
ブロックのレイアウトとボールとの衝突判定
※以下のコードではブロックを初期配置する際に、ボールやクローンの基準となるスプライトが衝突すると不具合が発生する。
そうならない様に必要に応じて ballスプライトやblockスプライトの位置を下の方に移動させる必要がある。
※足らないブロック for to や計算式などはツールボックスから探して利用する。
for i = 1 to の変数「i」は名前をクリックして変数名をxやyに変更できる。
配置例
左側 リストによる初期配置指定
右側 x-y座標から計算( X+Yをmod 3で分類)でブロック番号を指定
※ブロックのコスチューム番号0は矢印のコスチュームになる。+1して1以上の番号を割り当てるとよい。
blockスプライトのコスチュームを増やして色を増やした例。追加したコスチューム名には番号4 を指定した。ブロックのレイアウトで番号4を使用できるようになる。
XとY*2を比較してブロックの配色を切り替えた例。
Snap!のステージの上の停止ボタンが □ の状態では衝突判定がうまくできません。
衝突判定が機能している
衝突判定が機能していない