- 2024年11月3日
1分間 Unity講座 Dropdown の活用2 Dropdownリストに配列で用意した選択肢をセットする方法
このブログはUnityの初心者向けに、Untiyの機能の使い……

このブログテーマでは、スクラッチの初心者から上級者まで、ちょっとお役に立つ情報を不定期で紹介していきます。
前回は基本的な加速ジャンプを作成してみました。作成した動きは、ジャンプの高さによっては、地面に大きく沈み込んでしまうケースも見られます。これは直前のフレームの高さ(y座標)から、その時に持っている下方向へ向けた速度を引いた値が、着地時のフレームの高さ(y座標)になるため、状況に応じて地面より大きく下方向に沈み込んでしまうという不具合です。
今回はこの不具合を修正する方法をご説明します。
ジャンプの作り方シリーズの記事
下の動画は不定期配信の「ファイブボックス 一分間スクラッチ講座」です。ご興味のある方は併せてご参照ください。
前回の動画では次のようなスクリプトを作って、加速ジャンプを実現しました。

このスクリプトで基本的な加速ジャンプはできるのですが、着地した際に体の一部が地面に沈み込んでしまうという状態です。
沈み込みを修正するには、沈んだ分、y座標を上方向に移動させればよさそうですね。
そこで上の右側のスクリプトを次のように修正します。
追加するのは地面の色に付いたとき、変数「ジャンプ力」を0にする、の後の部分になります。

これで、沈み込んだ分を戻す処理が完成しました。
戻るときは1ずつ変わるので、かなりゆっくり戻っていくのが気になります。
スクラッチにはこのようなフレームごとの再描画処理をスキップして、結果だけを表示する機能があります。
次の手順で、ブロック定義を作成します。

作成したブロック定義「着地補正」には、「ずっと」ブロックの中に作成済みのスクリプトを丸ごと移動します。
さらに空いた「ずっと」ブロックの内部には、ブロック定義の呼び出しブロックを追加します。

これで地面から浮かび上がるという処理が瞬時に行われるようになります。
ここまでの全体のスクリプトは以下のような感じです。

現段階で空中ジャンプができてしまっています。
次回はこの空中ジャンプを回避するように修正します。
ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。