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

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

4回に渡って紹介してきたジャンプも、今回でひとまず完成です。

前回はプレイヤーが自在にジャンプの高度調整が出来るように改良してきました。
今回は現状の問題点を改善していき、ジャンプを完成させましょう。

■現状の問題点

今回も問題点の確認から。現状のジャンプの挙動問題はと言うと・・・

  • 落下中にZボタンを押すと、(ジャンプ推進力が残っている限り)二段ジャンプが出来てしまう

でした。
前回提示した【ジャンプの仕様】も列記しておきます。

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

【ジャンプの仕様】のうち、強調部分が再現出来てないわけですね。
現状のジャンプのプログラムの状況もまとめてみます。

  • 地上でZボタンを押すと、ジャンプ開始 = 「推進力を”6”ゲット」「ジャンプ力」を最大値「24」に設定する
  • 次に地上に着地すると、推進力は幾ら残っていようと「0」になる
  • ジャンプ中に【Zキーを押せば押すだけ】、推進力は「1」減り、「ジャンプ力」を最大値「24」に設定する(高度調整の為の機能)
  • キャラクターのy座標は常に「ジャンプ力-重力」分、動く(放物線のように動く為の機能)
  • ジャンプ中に【Zキーを離している瞬間があると】「ジャンプ力」が「4」減る

綺麗なプログラムかどうかはさておき、
(数値は各々で調整してもらえればいいですが)この仕様に穴があるから、課題のような状況を起こしています。

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

前回同様、この問題をどう解決したいのかを確認するのが最初のポイントになります。
今までのコードを全て捨てて一から作成する事も時にはいいでしょう。このままコードを改善しても勿論いいです。
いずれにせよ【落下し始めると再上昇は出来ない。(いわゆる二段ジャンプは不可)】という状態に改善していく必要があるわけですね。

今回は「コードを改善」していきましょう。

  • ジャンプ中に【Zキーを押せば押すだけ】、推進力は「1」減り、「ジャンプ力」を最大値「24」に設定する(高度調整の為の機能)
  • ジャンプ中に【Zキーを離している瞬間があると】「ジャンプ力」が「4」減る

このプログラムの構造を、

  • ジャンプ中に【Zキーを押し続けている間】、推進力は「1」減り、「ジャンプ力」を最大値「24」に設定する(高度調整の為の機能)
  • ジャンプ中に【一度でもZキーを離すと】「ジャンプ力」が「4」減り続ける

このように変更していきます。

「Zキーを押し続けているかどうかの判定」が出来れば、
ボタンが押されているかどうかのステータス(変数)を保持し続け、「過去押されていたか+今押されているか」で判定するのも良いでしょうし、
ジャンプ力が連続で減ったかどうかで判定するのも良いでしょうし、
どのような手段でも解決する事が出来ます。

今回は「設計として優れたもの」ではなく、「元のソースコードを極力壊さない方法」を取ってみます。
以下のように、「ジャンプ力が19よりも上だったら」という分岐を入れ、制御します。

「もし”19<ジャンプ力”なら」が新たに追加されたブロック

ジャンプ開始時「24」あったジャンプ力は、「4」ずつ減っていきます。
しかし、ジャンプ推進力がまだ残っており、かつZキーを押した時にジャンプ力は「24」に回復していきます。
つまり、Zキーを押し続けている間、ジャンプ力は24→20→24→20・・・と変遷していきます。
Zキーを離すとジャンプ力は「16」まで減るので、「Zキーを押し続けているかどうかの判定」が可能なわけです。

■綺麗なプログラムってなんだろう?

ここまでのプログラムを見て見ると、なんだかまとまりが無いように感じます。
変数もどんどん増えていってますし、ジャンプ力が「19より上」みたいな制御が増えていくと、
後々「ジャンプ力やっぱり調整してもう少しあげたいな・・・やっぱり下げたいな・・・」という時にあちこち修正しなければいけなくなって、不便です。

でも、最初はそれで大丈夫。100点満点のプログラム作成はいきなりは出来ません。1点ずつ上げていきましょう。

気になる方は例えば「ジャンプ力の「24」という数値を変数にしてみる」とか、
プログラムの組み方を見直してみる(ジャンプ力が4減るタイミングは適切か?とか、小さな事でもいいです)等を行って、より綺麗なプログラムにしてみましょう。
そのうち、記事にもしてみます。

今日はここまで。

次回は一度、ミニゲームらしく仕上げていきましょう。

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

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