バッテラが如く

プログラミングしましょ!

【Unity】RigidBodyでキャラをジャンプさせる

この記事の情報は次のバージョンで動作確認しています。

  • MacOS Monterey (12.1)
  • Unity (2021.3.2f1)
  • Unity

    はじめに

    どうも、バッテラです。

    キャラクターが用意できたら次はジャンプをさせたみたいと思うのがクリエイター思考だと思います(適当)

    ということでジャンプを実装する方法を共有したいと思います。

    キャラクターと地面を用意

    まずは準備物としてジャンプをさせるキャラクターと地面を用意しましょう。

    私はとりあえずこんな感じでやりました。

    RigidBodyをアタッチ

    キャラクターにRigidBodyをアタッチします。

    ConstraintsでRotationを固定しないと倒れてしまうのでチェック入れておきましょう。

    Colliderをアタッチ

    まず地面にColliderをアタッチしましょう。

    Createメニューから作ったゲームオブジェクトなら最初からColliderがついてると思います。

    次はキャラにColliderをアタッチします。

    なんでもいいですがBoxColliderをアタッチしておきました。

    キャラのサイズに合うようにColliderCenterSizeを調整します。

    AddForceでジャンプ

    次はスクリプトファイルで実装です。

    スクリプトファイルを作りキャラクターにアタッチします。

    今回は例としてSpaceキーを押したらジャンプするというコードを書いてみます。

    if (Input.GetKeyDown(KeyCode.Space))
    {
        Rigidbody body = GetComponent<Rigidbody>();
        body.AddForce(transform.up * power, ForceMode.VelocityChange);
    }
    

    コードを簡単に解説していきます。

    AddForceRigidBodyのオブジェクトに力を加えるメソッドです。

    ジャンプは力を加える方向はtransform.upになります。

    さらに瞬間的に力を加えるのでForceMode.Impulseにしています。

    ForModeについて詳しく知りたいのであれば以下の記事を見てもらえると幸いです。

    www.m2game.net

    powerは調整が難しいのでエディタでいじれるようにしておくのが吉です。

    これで実行してみると・・・

    これで無事実装完了です!