このブログテーマでは、スクラッチの初心者から上級者まで、ちょっとお役に立つ情報を不定期で紹介していきます。
前回は加速ジャンプ沈み込み制御編を作成してみました。正しいジャンプができましたが、2段ジャンプ(空中ジャンプ)ができてしまうような状態です。今回はこの2段ジャンプを制御する方法をご説明します。
下の動画は不定期配信の「ファイブボックス 一分間スクラッチ講座」です。ご興味のある方は併せてご参照ください。
1,作成済みのスクリプトの確認
前回の動画では次のようなスクリプトを作って、沈み込まない正確な加速ジャンプを実現しました。
現状のジャンプの条件は「上向き矢印キー」が押されたら・・・。
上向き矢印キーを押せば無条件でジャンプができてしまうので、ここを修正すればよさそうですね。
2,2段ジャンプの制御
空中でジャンプができてしまうのを防ぐには、ジャンプの条件に「上向き矢印キー」が押されたに加え「地面に接地している」という条件を与えます。
この状態で起動させてみましょう。
すると全くジャンプができない状態になっています。この原因は前回作成した「ブロック定義」の処理によるものです。
ブロック定義では次の処理を行っています。
空中にいたら重力(-1)ずつy座標を移動で着地
地面に触れたら地面から離れるまでy座標を 1ずつ移動で空中へ
この処理を「再描画せず実行」、つまり超高速で行っています。つまり見た目は地面に触れているように見えても、内部の処理としては地面と空中を行ったり来たりしているので、地面に触れたという条件が成り立たない状態です。
これに対応するため、ジャンプの信号を送るスクリプトで、ジャンプの直前に一旦キャラクターのy座標を-1だけ移動させます。このことで強制的に地面に触れさせ、ジャンプの条件を成立させます。
ただし、ジャンプをしないとそのまま下に沈み込んでしまうので、ジャンプの処理の後、y座標を1だけ移動させ、先に沈んだ分を相殺します。
これで2段ジャンプを制御することができるようになりました。
ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。
Comments