最終更新日:2024年11月13日
今回は、7種類のジャンプの作り方を紹介します。ジャンプは、ゲームやアニメーションに欠かせない要素ですが、作るのは意外と難しいです。どうやってキャラクターを上に動かすのか?どうやって重力を表現するのか?どうやって着地するのか?など、考えなければならないことがたくさんあります。
目次
よく使うもの
「一番簡単なジャンプ」の作り方
このスクリプトでは、「スペースキー」が押されたときにキャラクターのy座標を10ずつ増やしています。これによって、キャラクターは上に飛び上がります。しかし、このままでは地面に戻ってきません。そこで、同じ数だけy座標を減らしていきます。
「横移動できるジャンプ」の作り方
横移動できるジャンプを作るコツは、ジャンプのスクリプトと、横移動するスクリプトを分けることです。同じスクリプトに書いてしまうと、ジャンプしながら横移動することはできません。
「ふんわりジャンプ」の作り方
ふんわりジャンプ(重力ジャンプ)を作るコツは、上に飛び上がる移動量を少しずつ減らしていくことです。そして、下に落ちてくるときは段々と移動量を増やしていきます。
上図のスクリプトの場合、
上に飛び上がる移動量は、
15→14→13→12→11→10→9→8→7→6→5→4→3→2→1→0、と変化していきます。
下に落ちる移動量は、
0→ -1 → -2 → -3 → -4 → -5 → -6 → -7 → -8 → -9 → -10 →・・・、と変化していきます。
応用編
「回転ジャンプ」の作り方
「ジャンプ中」のときは、横移動ができないようにしました。
回転方法を「自由に回転」にするところがポイントです。また、左を向いて回転するときはコスチュームの上下を反転させる必要があります。詳しくは、プログラムの中を確認してみてください。
「2段ジャンプ」の作り方
下図の右側のように、下に落ちるスクリプトをずっと実行させておきます。
ジャンプの回数を数えるようにします。1回目のジャンプと2回目のジャンプのコスチュームを変えると、2段ジャンプらしく見えますよ。
「壁キックジャンプ」の作り方
下図の右側のように、下に落ちるスクリプトをずっと実行させておきます。壁に触れながら落ちるときは、落下速度をゆっくりにしてみました。
壁に触れながらジャンプするときは、壁から少し離れるようにプログラミングしました。
「空中にブロック(地面)があるジャンプ」の作り方
スマブラやマリオのような空中にブロックがあるゲームを作るのは意外に難しいです。この記事を参考にぜひ挑戦してみてくださいね。
プレイヤーの状態は下記の3パターン(着地中、ジャンプで上昇中、下降中)です。「着地中」のときにスペースキーを押すと、「ジャンプで上昇中」になります。ジャンプで上昇しているときに重力が働くとプログラミングが難しくなります。そこで、ジャンプで上昇中のときは重力を無効化し、下降中のときだけ重力を考えるようにしました(変数「ジャンプで上昇中?」を利用)。
また、空中のブロックに着地しているとき、左右に移動するとブロックから落ちる場合があります。そのため、ブロック定義「着地判定⇒着地?」をずっと実行しています。着地している場合は「着地?」の値が「はい」に、着地していない場合は「着地?」の値は「いいえ」になります。
プログラミングは以下のようになります。まずは、左右に移動するプログラムです。
下記は、ジャンプのプログラムです。
下記は重力のプログラムです。
下記は、着地判定のプログラムです。この中で赤枠の条件はどのように得られたか次で詳しく説明します。
まず、この作品のスプライトは下図の左の絵のようになっています。空中のブロックが3つあります。空中1のブロックの着地判定を見てみます。難しくはありません。スクラッチのステージ上で、プレイヤーを空中ブロック1の上にドラッグアンドドロップで移動させるだけです。ちょうどいい高さを見つけて、そのときの「y座標」をプログラムに記述すればよいのです。
実際のプログラムを見たいときは、下記の画像をクリックしてください。スクラッチの作品ページに移動します。
まとめ
いかがだったでしょうか。たかがジャンプ、されどジャンプ。色々なジャンプの方法があります。みなさんの作りたいゲームにぴったりのジャンプを、ぜひプログラミングしてみてください。
この記事のプログラムは、下の画像をクリックすると確認できます。
最終更新日:2024年11月13日
広告
最終更新日:2024年11月13日