はじめに
今回は、Scratchで猫をリアルにジャンプさせる方法について解説して、それを使ってアクションゲームを作っていきます!
完成品⬇️
※Scratchの画面が通常と多数違う部分がありますが、同じようにプログラムを作れば完成するので、Scratchの見た目は気にしないで下さい
(猫耳があったりクローンの数が表示されていたりしています)
下準備
ねこと地面のスプライトを作ります。大体こんな感じにしておけばOKです。
猫はちょっと大きすぎると感じたので半分のサイズにしておきました。(50%)
メインループを作る
重力という変数を作り、ゼロに設定。新しく「重力で落下させる」という定義を作ります。
重力で落下させる
重力を-1ずつ変え、y座標を重力ずつ変えて行きます。
そして、もし地面に触れたなら、y座標重力×-1ずつ変えます。そして、重力を0にします。
重力を-1ずつ変えていますが、-2にすると二倍重力が強くなります。
値を色々といじってみると、月の上のような重力になったり、面白いのでぜひ試してみてください!
仕組み解説
- y座標重力×-1ずつ変えるは何をしているのか?
これは、地面に触れたときに、y座標を重力の値とは逆方向に移動させています。
もし重力が-1だとしたら、地面に触れた時は-1×-1=1なので、y座標を1ずつ変えることになります。そうすると、地面に埋まるのを防ぐことができます。
そして重力が地面についても増え続けると挙動がおかしくなるので0にリセットしています。
ボタンを押すとジャンプできるようにする
ちょっと複雑に見えるかもしれませんが、そんなことはないので頑張ってプログラムを追加して行きましょう。先ほど作ったプログラムにそのまま追加するだけで大丈夫です。
まずはy座標を-1ずつ変え、もし地面に触れたなら、そしてその中に上向き矢印キーが押されたならを入れ、押されたときに重力を20にします。
そして最後にy座標を1ずつ変えます。
今回は上向き矢印キーが押されたらジャンプするようにしていますが、別に何のボタンでも大丈夫です。同様に、重力を20にしていますが、変更して大丈夫です。
これは、ジャンプ力で、値を増やせば増やすほどジャンプ力が強くなります。
仕組み解説
- y座標を-1ずつ変えるなどが入っている理由がわからない
今回のプログラムは一見複雑に見えましたね。ただ、実際はそんなことはなくて、単純です。
まず、そもそも地面に触れたなら、上向き矢印キーが押されたなら、ジャンプできるようにしている理由は、空気中で無限にジャンプできないようにするためです。
なので、地面に触れたならを追加しています。
それでは、なぜy座標を〜ずつ変えるがあるのでしょうか。解説して行きます。
試しに、y座標を〜ずつ変えるをとってみてください。
すると、猫はジャンプできなくなったと思います。一体なぜでしょうか。
理由は簡単で、先ほど、地面に着いたらy座標を変えて地面に埋まらないプログラムを作りましたよね?
実は、このプログラムが地面に埋まらないようにしているので、猫は地面に触れているようで、実は触れていないのです。
写真:実は地面に触れていなかった猫
なので、一回y座標を-1下げて、強制的に地面に触れさせます。すると、地面に触れた判定になるので、ジャンプができます。
ただ、-1ずつ下げるを一個だけ入れていると、ずっと地面を貫通して下がっていってしまうので、y座標を1ずつ変えるを追加して、下がっていかないようにします。
おまけ:左右移動を追加する
おまけで左右に移動するプログラムを追加してみます。左右に移動という定義を作り、メインループのところに追加します。
左右に動かす
このようなプログラムを定義に追加します。
もし右キーが押されたらx座標を10ずつ変え、90度に向けます。
このとき、回転方法を左右のみにしておかないと猫がひっくり返ってしまうので、プログラムの一番上に左右のみというブロックを追加しています。
そして、地面に触れたならx座標を-10ずつ変えるというものを追加しています。
これは、右矢印キーが押されたかつ地面に触れている状態=壁に当たっている状態を示しているので、壁に当たったとわかった時は進行方向とは反対方向に座標を変えています。
矢印キーも同じで、右矢印キーでやっていることの反対のことをするだけです。
最終的なプログラム
最終的にこのような感じになると思います。
これにて完成です!
完成した作品はこちらからみられます⬇️
最後に
これでリアルなジャンプができるアクションゲームが完成しました。プログラムを改造してみたり、ステージを変えてみたりして、自分だけのアクションゲームを作ってみてください!
何かわからないことなどがあったらぜひコメント欄に書き込んでください!
ここまで読んでいただきありがとうございました。
SNSシェアよろしくお願いします!




コメント
これが一番好き。こんな奴がもう好きで(笑)次は滑らかな左右移動を作ってほしいです!
by corderDojoオンラインに入ってみたいuper2121
それはよかったです。また近いうちにScratchの解説記事をたくさんだします。