今回は、SDユニティちゃんを使って「Character Controller」の設定を行っていきます。
スクリプトを作ってモデルを走らせたり、ジャンプさせるには、Character Controllerを使うと便利です。Character Controllerは、ColliderとRigidbodyを組み合わせたようなコンポーネントです。
階段を上る際など、物理的にやや複雑な動作等を上手く取り扱ってくれます。
Character Controllerの使い方(モデル:SDユニティちゃん)
まずは、SDユニティちゃんをシーン上に配置します。SDユニティちゃんを選択した状態で、Add Componentメニューから「Character Controller」を追加します。
この状態だと分かりますが、ユニティちゃんの見た目とコライダの範囲が明らかに違います。かなり下の方までコライダが表示されているので、Character ControllerのCenterとHeightを調整します。
私の場合は、Centerを「0.5」にしてHeightを「1」に変更しました。
UnitychanControllerスクリプトを作成する
SDユニティちゃんを制御する「UnitychanController」スクリプトを新規作成します。
CharacterControllerの場合は、Rigidbodyとは違って重力は自動で計算されないので、重力の値を考慮しながらベクトルの計算を行います。
このスクリプトは、キーボードの入力に応じて、ユニティちゃんを前後左右に移動及びジャンプさせるような内容になっています。
「controller.isGrounded」でユニティちゃんが地面に接地しているか判断し、接地していればキーボードの入力を受け付けるようになります。
上下矢印キーで前後に移動し、左右キーで方向転換を行います。また、スペースキーを押すとジャンプするようにしています。
重力は、Time.deltaTimeの特性を活かして、毎フレームの重力のvelocityを下方向に加えます。
ユニティちゃんの移動方法は、TransformDirection関数で、ローカルの移動ベクトルをグローバルな値に変換して、CharacterControllerのMove関数に渡します。
CharacterControllerでの移動は、基本的にMove関数を使う事になります。
スクリプトを保存したら、ユニティちゃんにアタッチします。
実行して、動作を確認してみましょう。
アニメーションの実装を行っていないので、若干不自然ですが今回はCharacterControllerの使い方に関しての紹介でしたので、基本的なキャラクターの制御の仕方が分かってもらえればと思います。