スクラッチに挑戦している皆さん、どうも!スクラッチコーチです。
ギミックを動くようにはなっているけど、ここの処理はまだまだ改善できる。というか改善しておかないと、複雑なギミックを作ったり、ギミックを再利用してアスレを盛り上げることが難しいんだ。
だから今回はギミックのリファクタリング(改善)に取り掛かろうと思う。なにげにリファクタリングが一番コーディングの練習になるから、気合を入れていってみよう。
- ① まずはここからレッツゴー!
- ② リファクタリング)ステージをスプライトにしよう
- ③ シーンの切り替えのベース処理
- ④ ヒットボックスを使おう
- ⑤ アニメーションを実装しよう
- ⑥ 絶望の坂道処理を克服する
- ⑦ 長押しで大ジャンプする
- ⑧ 壁をツツ〜っとスライドする
- ⑨ か、壁ジャンプだと!?かっこよすぎるだろ
- ⑩ ステージがヨコにだけ続くと誰が言った?タテ構造
- ⑪ うわ!障害物が行く手をさえぎるぞ
- ⑫ 動く床のギミックを作ろう!
- ⑬ ギミックに乗っているときの衝突処理
- ⑭ オシャレなグラフィックを作るコツ
- ⑮ アイテムをゲットできればゲームに目的ができる!
- ⑯ 重要アイテムがないと開かないドア!?たぎる!
- ⑰ チェックポイントを作って激ムズなアスレを作ろう!
- ⑱ ゲームオーバーを作って緊張感をキープする!
- ⑲ エネミーが現れた!どうすりゃいいのよ!?
- ⑳ エネミーを踏んづけろ!
今回の目標
ギミックの動きなどを再利用可能な形にリファクタリングしていく。
ステージを改変しておく
ちょっとスペースを作っておきたいから、シーン1の左側に通路を作っておこう。
そしてシーン1を複製する。
シーン0という名前にしよう。うん、シーンはマイナスになっても別に問題ない。
で、このシーン0は色々ギミックを試したいからできるだけ広い空間にしておく。
ちなみにシーン0の上にシーンを作るとしたら?それはシーン100になる。シーン-1の上なら、それはシーン99になる。こんな感じで上下左右に好きなようにアスレワールドを展開しちゃってくれ。
スプライト「ギミック」を改善していく
ではスプライト「ギミック」をひらこう。
メッセージ「シーンを切り替える」を受け取ったときに、コスチューム1に着替えて最背面に移動しておこう。
そして新しく条件ブロックを置き、シーン0のケースを作る。
とりあえず適当なところに出現するようにXとY座標を設定しようか。
定義「_上下に動く」を作る
よし、じゃあこのギミックは上下に動くようにしよう。
これをシーン0のところで実行する。
コーディングする
まず向きを90度に直して、ずっとループを実行しよう。
あ、表示するブロックも置いておこう。
ここで1.5秒で移動するようにブロックを置き、Y座標だけ下に下るようにする。
そしてタイミング調整のためにゼロ秒待つブロックを置く。ゼロとはいえ若干の微調整になる。
さらにY座標が元に戻るようなブロックを置く。
ギミックが上下に動くかテストする
うん、いいね。これは上下に幅90で動くという相対的な値を指定しているから、どこにギミックを出現させてもいちいち座標を指定せずに動かすこと出来る。これだけでもステージ作りがめちゃめちゃ楽になったよね!
スプライト「エネミー」からコードをコピーする
つぎはエネミーを開こう。
そして緑の旗が押されたときの処理をドラッグアンドドロップでギミックにコピーしよう。
さらにメッセージ「シーンを切り替える準備をする」を受け取ったときの処理もコピーしよう。
最後に定義「_スポーンする」もコピーしよう。
これでOKだ。
エネミーでも必要なブロックだから、消さずに残しておいてね。
スプライト「ギミック」をスポーンさせる
ではギミックに戻ろう。
コピーしておいた定義「_スポーンする」からID以下を外して削除しよう。
コスチュームに引数タイプを割り当てよう。
シーン0のときに、この定義を実行する。この際、引数にはもともと設定してあったXとY座標の値を引数に持たせて、向きは90度にしよう。また、タイプはコスチューム1としておいてほしい。
さらにシーン4のときに実行してた定義「ドアを置く」の代わりに定義「スポーンする」を使おう。定義「ドアを置く」は別の場所で使うよ。
コスチューム名に含まれる文言によって動きを変える
クローンされたときに条件ブロックを置こう。
ここでコスチューム名にどんな文言が含まれるか調べる。たとえばKeyという文言が含まれていたら、という条件を作ろう。
この場合はドアであると決める。だから定義「ドアを置く」を実行する。
これで元通りドアが置かれるようになった。でもコーディングはより柔軟になって、ステージ作りが簡単になりそうな気配をビンビン感じる。まだ感じない人も大丈夫、ちょっと試してみるよ。
上下する床を新しく作ってみる
今まで「コスチューム1」だったギミックのコスチュームに「上下する床」という名前をつけよう。
「シーンを切り替える」を受け取ったとき
そしてメッセージ「シーンを切り替える」を受け取ったときに、スポーンするタイプを「上下する床」にしておこう。
もう1つ追加しておこうか。
クローンされたとき
クローンされたときに新しく条件ブロックを追加して、コスチューム名に「上下」が含まれているかどうかを調べよう。含まれていれば定義「上下に動く」を実行する。
追加されたかテストする
ショート動画ではないけど、↓こんな感じで上下する床をサクッと再利用できたと思う。
実行ブロック1つでどんどんギミックを配置できるから、すっごく楽だね。
まとめ
これでギミックに革命を起こしていく準備が整った!次回はいよいよアスレチックが爆発的に面白くなる仕掛けを作る。そう、回転するギミックだ!
このグリフパッチさんの動画を再生してみて!(回転するギミックの部分だけ再生されるよ)
これやばいっしょ!お楽しみに!
- ① まずはここからレッツゴー!
- ② リファクタリング)ステージをスプライトにしよう
- ③ シーンの切り替えのベース処理
- ④ ヒットボックスを使おう
- ⑤ アニメーションを実装しよう
- ⑥ 絶望の坂道処理を克服する
- ⑦ 長押しで大ジャンプする
- ⑧ 壁をツツ〜っとスライドする
- ⑨ か、壁ジャンプだと!?かっこよすぎるだろ
- ⑩ ステージがヨコにだけ続くと誰が言った?タテ構造
- ⑪ うわ!障害物が行く手をさえぎるぞ
- ⑫ 動く床のギミックを作ろう!
- ⑬ ギミックに乗っているときの衝突処理
- ⑭ オシャレなグラフィックを作るコツ
- ⑮ アイテムをゲットできればゲームに目的ができる!
- ⑯ 重要アイテムがないと開かないドア!?たぎる!
- ⑰ チェックポイントを作って激ムズなアスレを作ろう!
- ⑱ ゲームオーバーを作って緊張感をキープする!
- ⑲ エネミーが現れた!どうすりゃいいのよ!?
- ⑳ エネミーを踏んづけろ!
当連載で取り上げるグリフパッチさんの動画はこちら
質問テンプレート(素早く3回クリックすると全選択できるのでコピーしよう)
・◯◯ ... 記事のどこまで実装が終わったのかを記入しよう。・□□ ... どんな問題が起きているのか、どういうときに起きるのか、具体的に書こう。
・共有済みURL ... たまに共有してない作品URLを書いてる人がいるけど、共有しないとこちらから確認できないからよろしくね。