CharacterContollerを使ったキャラクタをジャンプさせる
CharacterControllerコンポーネントは、ジャンプ機能を持っていないので、自作します
シーンの構成
DummyGravitySampleでプロジェクトを作成します
次の図を参考にシーンを作成しましょう

コード
Capsule ゲームオブジェクトにアタッチするコードを考えていきます
CharacterContollerコンポーネントを取得
コンポーネントの取得は色々な方法がありますが、今回は、GetComponentメソッドを使った方法にします
書籍で使われているケースが多いパターンです
地上かどうかチェック
isGroundedプロパティは、地上の場合true、空中の場合falseが入ります
地上の時だけジャンプしたい時、このブロックに処理を記述します
重力のシミュレート
Rigidbodyを使わないので、Y軸に下向きの速度を加えます
Physics.gravity.yは、editメニュー、ProjectSetting…で確認することができます。変更も可能です(月の重力の場合1/6でしょうか)

は、次のコードと同等です
Updateメソッドに記述することになります
Jumpボタンを押されていない時、重力分の速度を加えます
Physics.gravity.yは、デフォルトで -9.8fなので+=ですが、引くことになります
Updateメソッドが実行されるたびに速度は減っていきます
書籍でルーレットが徐々に止まる、車が徐々に減速するチュートリアルと原理は同じです
Physics.gravity.y * Time.deltaTime;は、加速度(m/s2) * 時間(s)で 速度が計算できます(m/s)moveVelocityYは、ジャンプボタンを押されたら0にします
キャラクタの移動(今回は、上方向限定)
CharacterControllerコンポーネントには、Moveメソッドがあります
引数に移動のベクトル(方向と長さ)をセットします
型は、Vector3型です。今回は、y軸計算だけ抜き出していましたので、xとzに0を代入してVector3型とします
これは、次のコードと同等です。
全体のコード
実行結果
スペースキーを押すとジャンプします
ディスカッション
コメント一覧
まだ、コメントがありません