Scratchでアクションゲーム制作をしてみる その3「ジャンプ」3回目。

Scratchでアクションゲーム制作をしてみる その3「ジャンプ」3回目。

前回に引き続き、ジャンプの制作を続けていきます。

今回はプレイヤーが自在にジャンプの高度調整まで行えるような、アクションゲームらしいジャンプを作っていきましょう。

 

■現状の問題点

現状のジャンプの挙動問題は1点。

  • Zボタンを押し続けると、際限なく上昇してしまう

無限ジャンプする動画

どこまでも飛ぶよ

■課題をゴールに導こう!

このように、ゲーム作成中に何かしらの問題に当たったら、この問題をどう解決したいのかを確認するのが最初のポイントです。
「丁寧に作成を進めているゲームであれば」ゲームの設計段階でとっくに「ジャンプはこうあるべき」と仕様が決まっているはずですが、

今回のように学習だったり行き当たりばったりで作成していたりすると、仕様なんて無いので、まずゴール…課題をゲームとするなら、ゴールはクリア、それを決めましょう。

今回はアクションゲームの中でもわりと自由が利くタイプのジャンプを目指したいと思います。

  • Zボタンを押すと、ジャンプする。
  • そのままZボタンを押し続けると限界までジャンプ力が伸びる
  • Zボタンを離すか、ジャンプ高度が限界まで達すると落下する。
  • 落下し始めると再上昇は出来ない。(いわゆる二段ジャンプは不可)
  • 横移動は常に、自由に出来る。

これらがジャンプの仕様=解決したい課題ですね。

ここから概ね、解決するための方策・手順へ分解していきます。

最初は上手くいかないので「仮説を立てる事」をイメージしていきましょう。

  • ジャンプの限界値を決めるための変数は必要そう
  • 「Zキーが押されているか」「ジャンプ開始からZキーが離されたか」のキーの状況を判定する必要もありそう

んー、いざ言語化しようとすると、なかなか難しいですね?でも最初はこんなものでも構いません。

この辺りに目星をつけて、プログラムを作成していきます。本来のお仕事であれば曖昧なまま作りませんし、手を入れ始める箇所も決まってますが、Scratchは自由です。お遊びとして固く考えず、具体的に考えられた方策から手をつけてみましょう。

■一つずつ作成、ぴょんぴょんジャンプできるように

まずは「二段ジャンプは不可能」、つまりZキーの判定をより詳しく行っていきましょう。

変数「Zキー押されジャンプ開始」を一個作ります。わかりやすくていいですね。

この変数は「1」が入っている(代入されている)時、「ジャンプは開始してる」ものとします。

「0」のときは「ジャンプしていない時」としましょう。

変数の初期化

ゲームスタート(=緑の旗クリック)の時は「0」にしておきましょう。Zキー押されてませんし。

着地時の処理

着地時には「ジャンプが終了した状態」・・・「0」に戻しましょう。

次はZキーが押されたときにこの変数に1を入れれば完了・・・ではありません。

  • 「Zキーはプレイヤーに何回も押されるかも」しれません。
  • 「Zキーを押したら変数を1にする = ジャンプ開始する」なので、Zキーを押し続けるとずーーーーっとジャンプしたまま。今までと変わりません。

そこで、

  • 「Zキーを押したときに「既にジャンプ開始している状態だったら」、何もしない。」
  • 「Zキーを押したときに「まだジャンプ開始してなければ」ジャンプ開始」

この処理を加えます。

ジャンプ実装

ぴょんぴょんジャンプ

ぴょんぴょんジャンプの完成です。

■次は「高度調整できるジャンプ」を作成

これで「ずっと上昇し続けるジャンプ」は回避されました。

しかし、

  • そのままZボタンを押し続けると限界までジャンプ力が伸びる
  • Zボタンを離すか、ジャンプ高度が限界まで達すると落下する。

これらがまだ出来てませんね。

  • ジャンプの限界値を決めるための変数は必要そう

先ほどあげた方策に従って作ってみましょう。

変数を新たに作成

変数「ジャンプ推進力」!なんだかかっこいい

まずジャンプ系の変数は作ったら「ゲーム開始時」と「床に着地時」の時に変数をリセットする処理を先に作成してしまいましょう。

先にやっておくと、後で確認漏れも無くなっていいですよ。

 

ジャンプ推進力の使い方は以下の通り。

  • ジャンプ開始時に一定の数値を入れておく
  • 「Zキー押されジャンプ開始」が1の時かつZキーが押されているときは推進力は1ずつ減っていく
  • 上記の処理中に「ジャンプ力」の再付与を行う

ちょっと複雑なので、ゲーム風に例えてみます。

  • ジャンプ開始時に「6」(数値はお好きにどうぞ)のパワーを得る
  • ジャンプキーを押し続けると、パワーは「1」ずつ減っていく。代わりに、ジャンプの高度は少し伸びる。
  • パワーが「0」になると、それ以上高度は伸びない。
  • パワーが余っている状態だとしても、途中でジャンプキーを離してしまうと落下しかできない。
  • 再度ジャンプするとまた同じくパワーを得る。

こんな感じです。プログラムで組むと・・・?

ジャンプメインプログラム

ジャンプのメインプログラムだけ抜き出してみました。

こんな感じになります。さ、動かしてみましょう。ちょこっと足場の位置も調整して・・・

出来・・・ッ・・・・!!! ・・・あ・・・れ・・・?

  • そのままZボタンを押し続けると限界までジャンプ力が伸びる
  • Zボタンを離すか、ジャンプ高度が限界まで達すると落下する。

今あげた高度調整は出来るようになりました。

■でき・・・・た・・!?・・・あれ?

アクションゲームの中でもジャンプ中心のアクションによくみられる、
「プレイヤーがジャンプ高度を決めれる、自由度の高いジャンプ」であるのと同時に「操作に細やかさが求められるジャンプ」にもなってます。

ですが・・・

二段ジャンプが出来てしまっている

空中で再ジャンプが出来てます。これは「推進力が残ってるとジャンプ出来てしまう」状況で、

  • パワーが余っている状態だとしても、途中でジャンプキーを離してしまうと落下しかできない。

この仕様が達成できてないんですね。

 

ちょっと長くなってしまったので、今日はここまで。

次回でジャンプの完成です。

 

ゲームはこちら。FLASH入ってると動かせます。改造もしていいです。

改造したい方、中身見たい方はこちらをクリック