#010 重力ゲームの作り方|もし〜なら・でなければブロック入門

ok-scratch

スクラッチに挑戦している皆さん、どうも!スクラッチコーチです。

スペースキーを押したらロケットが上昇し、離すと落下する重力ゲームをスクラッチで作ろう。「もし〜なら、でなければ」ブロックを使った条件分岐の基本を楽しく学べるチュートリアルです。

さぁ、スクラッチでナニ作る!?

スペースキーを押すと上昇20、離すと落下10という非対称な速度設計が効いている。上昇と落下の力を同じにすると操作がただの往復になるが、2倍の差をつけることでちょん押しでふわっと浮き、離すとじわっと落ちる手触りが生まれる仕組みだ。条件分岐ブロックに2つの数値を入れるだけで操作感をコントロールできる発想、作り方から確かめていこう。

動画で見てみよう

ok-scratch ok-scratch
チャンネル登録して応援よろしく!チャンネル登録する

チュートリアルの元になった作品

今回の目標

  • スペースキーを押したらロケットが上昇する
  • キーを離したら重力で落下する
  • 端に当たったら初期位置に戻る

スターター作品をリミックスしよう

このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード

#1ロケットの準備

ok-scratch ok-scratch
前回は矢印キーでロケットを動かしたよね。今回はスペースキー1つでロケットを飛ばすよ。押したら上昇、離したら落下──重力に逆らうゲームを作ろう!

準備

スプライト「ロケット」を開く

ロケットロケット
スプライトについて
スペースキーで上昇・下降するロケット。端に触れると初期位置に戻る
どんな役割か
スペースキーを押したらロケットが上に飛んで、離したら下に落ちるようにするよ。端に当たったらスタート位置に戻るようにしよう!

実装

step-0

イベントgreenflag が押されたときでスタートしたら、見た目大きさを ( ) %にするでロケットのサイズを50%にするよ。元のスプライトだと大きすぎるから、半分にして画面内で動き回りやすくしてるんだ。ロケットの出発地点を画面下のほう、座標(0, -150)にセットして発射準備完了

ok-scratch ok-scratch
スプライトのサイズって実はゲームの操作感に直結するんだよ。画面の高さは360ドットしかないから、ロケットが大きすぎると上昇・落下の距離が足りなくてすぐ端に到達しちゃう。50%っていう値はこの画面サイズに合わせた絶妙な設定なんだ。

#2上昇処理を作る

ok-scratch ok-scratch
ここがこの作品のキモ。スペースキーを押している間はロケットが上に飛んで、離すと重力で落ちてくる──そんな動きを作るよ。
step-1

まず制御ずっとの中に制御もし ( ) ならでなければを置こう。以前使った「もし〜なら」に「でなければ」が加わったバージョンだね。スペースキーが押されていたらy座標を20ずつ増やして上昇させる。

上昇中は見た目次のコスチュームにするで噴射アニメーションが切り替わる。

確認プレビューしておこう 確認プレビューしておこう
旗を押すとロケットが画面下に出てきて、スペースキーで上昇・離すと落下するようになったね。端に触れたらスタート位置に戻る。

#3落下処理を作る

ok-scratch ok-scratch
スペースキーが押されていなければ-10ずつ変えて落下。
step-2

落下中はRocketship-eの静止コスチュームに戻るよ。

ok-scratch ok-scratch
上昇速度20に対して落下速度10──上に飛ぶ力が落ちる力の2倍っていう非対称なバランス、気づいたかな。実はこれ、あの「Flappy Bird」と同じ考え方で、ちょん押しでも上がれるけど離すとゆっくり落ちていく気持ちよさを生んでるんだよ。ゲームの操作感って、たった1つの数値を変えるだけで全然違うものになる。その調整が大事。細部に神が宿るんやで(どした?)

#4着地処理を作る

ok-scratch ok-scratch
端に触れたらy座標を-150にリセットする処理も入れてあるから、画面外に飛び出してもスタート地点に復帰するんだ。
step-3

次回はメッセージを使って、スプライト同士がやり取りする方法を学んでいこう!

まとめ

どうだった?「もし〜なら、でなければ」ブロックを使って、2つの動きをきれいに切り替えられたね。上昇速度と落下速度の数値を変えると手触りがガラッと変わるから、ぜひ色々と試してみて。次回はメッセージを使って、スプライト同士がやり取りする方法を学んでいくよ!

ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!