- スターター作品
- なし
- 今回の完成サンプル
- なし
さぁ、スクラッチでナニ作る!?
スペースキーを押すと上昇20、離すと落下10という非対称な速度設計が効いている。上昇と落下の力を同じにすると操作がただの往復になるが、2倍の差をつけることでちょん押しでふわっと浮き、離すとじわっと落ちる手触りが生まれる仕組みだ。条件分岐ブロックに2つの数値を入れるだけで操作感をコントロールできる発想、作り方から確かめていこう。
動画で見てみよう
[talk]チャンネル登録して応援よろしく!チャンネル登録する[/talk]チュートリアルの元になった作品
[prj-embed prj="1311881573" mini="1" title="プレイしておこう" prj-title="はじめてのスクラッチ #010" prj-author="ok-scratch"]今回の[prj-link prj="1311881573" title="はじめてのスクラッチ #010" author="ok-scratch"]スクラッチを作る参考作品[/prj-link]です。[/prj-embed]今回の目標
- スペースキーを押したらロケットが上昇する
- キーを離したら重力で落下する
- 端に当たったら初期位置に戻る
スターター作品をリミックスしよう
このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード
#1ロケットの準備
[talk class="m-l-n"]前回は矢印キーでロケットを動かしたよね。今回はスペースキー1つでロケットを飛ばすよ。押したら上昇、離したら落下──重力に逆らうゲームを作ろう![/talk]準備
スプライト「ロケット」を開く
| スプライトについて |
|---|
| スペースキーで上昇・下降するロケット。端に触れると初期位置に戻る |
| どんな役割か |
| スペースキーを押したらロケットが上に飛んで、離したら下に落ちるようにするよ。端に当たったらスタート位置に戻るようにしよう! |
実装
[talk]スプライトのサイズって実はゲームの操作感に直結するんだよ。画面の高さは360ドットしかないから、ロケットが大きすぎると上昇・落下の距離が足りなくてすぐ端に到達しちゃう。50%っていう値はこの画面サイズに合わせた絶妙な設定なんだ。[/talk]
#2上昇処理を作る
[talk class="m-l-n"]ここがこの作品のキモ。スペースキーを押している間はロケットが上に飛んで、離すと重力で落ちてくる──そんな動きを作るよ。[/talk]まずずっとの中にもし ( ) ならでなければを置こう。以前使った「もし〜なら」に「でなければ」が加わったバージョンだね。スペースキーが押されていたらy座標を20ずつ増やして上昇させる。
上昇中は次のコスチュームにするで噴射アニメーションが切り替わる。
#3落下処理を作る
[talk class="m-l-n"]スペースキーが押されていなければ-10ずつ変えて落下。[/talk]落下中はRocketship-eの静止コスチュームに戻るよ。
[talk]上昇速度20に対して落下速度10──上に飛ぶ力が落ちる力の2倍っていう非対称なバランス、気づいたかな。実はこれ、あの「Flappy Bird」と同じ考え方で、ちょん押しでも上がれるけど離すとゆっくり落ちていく気持ちよさを生んでるんだよ。ゲームの操作感って、たった1つの数値を変えるだけで全然違うものになる。その調整が大事。細部に神が宿るんやで(どした?)[/talk]
#4着地処理を作る
[talk class="m-l-n"]端に触れたらy座標を-150にリセットする処理も入れてあるから、画面外に飛び出してもスタート地点に復帰するんだ。[/talk]次回はメッセージを使って、スプライト同士がやり取りする方法を学んでいこう!
まとめ
どうだった?「もし〜なら、でなければ」ブロックを使って、2つの動きをきれいに切り替えられたね。上昇速度と落下速度の数値を変えると手触りがガラッと変わるから、ぜひ色々と試してみて。次回はメッセージを使って、スプライト同士がやり取りする方法を学んでいくよ!