かとりぶたとあじさいの、子どもと遊ぶログ

かとりぶたとあじさい夫婦による、男子3兄弟育児での体験や、考えたことのブログ。

【Scratch】スプライトに重力を働かせる

やりたいこと

スプライトに対して重力を働かせます。
その状態でスプライトに初速度を与えると、重力に従って速度が変化していきます。

使うイメージ

アクションゲーム全般。
特にマリオ系のアクションゲーム。

スプライトとスクリプト

用意するスプライト

キャラクター(ねこ)
キャラクター
じめん
地面

スクリプト

重力の定義
キャラクター
重力の定義
キャラクターのスプライトに「じゅうりょく」を定義しておきます。
この「じゅうりょく」の処理が走っていると、スプライトは「Yそくど」(速度のY軸方向成分)にそって動きます。
「Yそくど」は重力の影響で減少していき、「じめん」スプライトに当たるとゼロになります。
スプライトがじめんに触れていて「Yそくど」がゼロになると、重力の働きはなくなります。

キャラクター
重力を働かせる
キャラクタースプライトに重力を常に働かせます。
重力の強さは-1としています。これを大きくすると重力は強くなります。

初速度を指定してジャンプさせる

初速度(「Yそくど」の初期値)を指定すると、「じゅうりょく」コマンドに従って動きます。
ここでは、スペースキーを押すと「Yそくど」に10を代入します。
キャラクター初速度を指定してジャンプさせる

横方向(X軸)の動きについて

「じゅうりょく」は、「Yそくど」の処理しか行っていないので、X軸のうごきは影響を受けません。
横方向に動きながらジャンプさせると、ななめにジャンプします。

二段三段ジャンプ

このスクリプトでは、二段ジャンプ三段ジャンプができます。
これを禁止したい場合はそのための処理を入れる必要があります。
簡単に、Y軸方向の速度がゼロの時だけ(つまり地面に立っている時だけ)ジャンプできることにしましょう。
二段ジャンプ禁止スクリプト
これだと、厳密にはジャンプの頂点でキャラクターが止まっている瞬間も二段ジャンプ可能ですので、スペースキーを押したときに「地面に触れていたら」ジャンプする、という条件の方が良いかもしれません。