スクラッチに挑戦している皆さん、どうも!スクラッチコーチです。
壁ジャンプができてアクロバティックな動きが加速された。もうこうなったら天井なんて取っ払ってどこまでステージを上に続けられるようにしていこうぜ!そう、ステージのタテ構造化に挑戦するときが来たのだ!
- ① まずはここからレッツゴー!
- ② リファクタリング)ステージをスプライトにしよう
- ③ シーンの切り替えのベース処理
- ④ ヒットボックスを使おう
- ⑤ アニメーションを実装しよう
- ⑥ 絶望の坂道処理を克服する
- ⑦ 長押しで大ジャンプする
- ⑧ 壁をツツ〜っとスライドする
- ⑨ か、壁ジャンプだと!?かっこよすぎるだろ
- ⑩ ステージがヨコにだけ続くと誰が言った?タテ構造 (いまここ)
- ⑪ うわ!障害物が行く手をさえぎるぞ
- ⑫ 動く床のギミックを作ろう!
- ⑬ ギミックに乗っているときの衝突処理
- ⑭ オシャレなグラフィックを作るコツ (11月23日に公開予定)
今回の目標
- 天井のないところで画面の端までいくと、上のシーンに切り替わる
- 上のシーンに切り替わったときは、画面の下から少し余裕のある場所にプレイヤーをスポーンさせる
イメージしておくと分かりやすいので、まずは完成動画を見てほしい↓
これを作っていく!
ステージを拡張しよう
スプライト「ステージ」のコスを開いて、シーン1を複製しよう。
複製したコスのすべての要素を選択状態にして、上下反転ボタンを押そう。
その後に整えて、シーン1の天井部分と続く壁を整えよう。
スクショないけど、シーン1も少し形を変えて、水色の壁を用意してある。ちょうど壁が上に続くようにX座標を合わせて描いてあるよ。イメージがつかない人は今回の目標のところに掲載した完成動画を観てみてね。
上になるシーン名は「シーン101」にしておこう。
ここは命名規則が重要になる。
- シーン1の上はシーン101
- シーン2の上はシーン102
- シーン3の上はシーン103
という感じで管理していくぞ。
スプライト「プレイヤー」のシーン切り替え処理を改修する
つぎはプレイヤーだ。
定義「シーンの切り替え処理を行う」に引数を追加する
すでに作った定義を編集して、引数Yを追加しよう。
メッセージ「メインループの最終処理を行う」に追加する
すでにいくつかシーンの切り替え処理があると思うので、条件ブロックごと複製しよう。
この条件ブロックを下部に2つ用意してほしい。上シーンに上がるとき、下シーンに下るときの2つだよ。
引数の中身は下のスクショを見て注意深く値を入れてね。
上に上がるときはシーン1に100をプラスして、シーン101へ行く。逆に下に下るときはシーン101から100を引いてシーン1へ行く、という処理になるよ。
定義「シーンの切り替え処理を行う」を改修する
今まではX座標だけだったけどY座標も渡されるケースができたから、どっち側の座標を指定すればいいのか、条件ブロックを使って調べる処理を追加する。
まずXへの処理を条件ブロックで囲おう。
条件式で引数Xが空白かどうかを調べる。空白でなければX座標に割り当てる。空白ならX座標は変更したくない。
Y座標についても同じように作っていくよ。
引数Yが空白でなければY座標にセットしよう。
埋もれの修正処理もXとYで変える
シーンを切り替えた際に埋もれを処理する定義を作ったよね。ちょっとした段差ならスムーズにシーンが切り替わるための定義だったね。
今まではX方向にしかシーンが切り替わらなかったから、埋もれを修正する定義の引数はゼロで固定だった。このゼロというのはヨコにシーンが切り替わったとき、プレイヤーの向きをゼロ度(上向き)にしてタテの段差に埋もれないようにするための数字だった。
これをY方向にも対応させるにはどうしたらいいだろうか。今度はXと逆で、タテにシーンが切り替わったとき、プレイヤーの向きを90度(横向き)にして段差に埋もれてないかをチェックしていけばOKだよ。
つまり、Xなら引数をゼロ、Yなら引数を90にするっていうことだ。
定義「シーンの切り替え処理を行う」の下の方に条件を追加する
さらに下の方にも条件ブロックを追加するよ。
条件式では引数Xが空白かどうかを調べるようにしよう。
今まで条件ブロックでは囲っていなかった定義「_埋もれを修正する」を条件ブロック内に移動してほしい。
さらに「でなければ」のところに引数を90にした定義「_埋もれを修正する」を実行するようにしてね。
これでOKなはず。
タテ方向へのシーン切り替えがスムーズにいくかテストする
よっしゃあ!ステージも夢も広がったぜ!
シーンを下にも拡張しよう
さらにシーンを増やしてみよう。
シーン101を複製する。
シーン102にするよ。
すべての要素を選択して左右反転させる。
↓こんなかんじにした。
下にも降りれるかテストする
上方向のシーン切替時は少しゆとりを設ける
上にシーンが切り替わったときにY座標でマイナス180のところにプレイヤーを表示すると、ふとしたはずみでスグにまた下のシーンに戻ってしまうことが多かったから、マイナス160くらいのところにスポーンするように調整してみた。このほうがゲームバランスがよさそう。
まとめ
なんと、シーンがタテにも広がってしまった。。。こりゃとんでもなく広大なアスレワールドを創れる予感。しかも壁ジャンプとかできちゃうし、ゲーム体験もバッチリ過ぎる。なにこれ楽しすぎん?
プレイヤーも自由自在にワールドを散策できてストレスフリー。。。っと、それだけじゃあ1回のプレイで飽きちゃうよね。
もちろん、そうは簡単にはいかないぜ。プレイヤーの行く手をさえぎる存在を用意して「チャレンジ」をつくることもゲームの面白みの1つ。
次回は当たっちゃダメな障害物を作る方法を紹介するぞ。
たとえば↓こんなマグマとかな!
うわーどんどんハイクオリティになっていくで〜。
- ① まずはここからレッツゴー!
- ② リファクタリング)ステージをスプライトにしよう
- ③ シーンの切り替えのベース処理
- ④ ヒットボックスを使おう
- ⑤ アニメーションを実装しよう
- ⑥ 絶望の坂道処理を克服する
- ⑦ 長押しで大ジャンプする
- ⑧ 壁をツツ〜っとスライドする
- ⑨ か、壁ジャンプだと!?かっこよすぎるだろ
- ⑩ ステージがヨコにだけ続くと誰が言った?タテ構造 (いまここ)
- ⑪ うわ!障害物が行く手をさえぎるぞ
- ⑫ 動く床のギミックを作ろう!
- ⑬ ギミックに乗っているときの衝突処理
- ⑭ オシャレなグラフィックを作るコツ (11月23日に公開予定)