重くなるUnity 26 「Shall we Move? - 制御する」
タイトル変えました。そっちのほうが文字をとらないので、、、
今回はCharacter Controllerを(ちょっと)使っていきます。と言ってもRigidbodyも(主に)使います。Rigidbodyを使えば慣性が働くようになるからです。
Script : KamiplaController.cs
考えて、テストしまくって作ってきた(サイトも参照した)のがこれ、
speedやrotationspeedなどはInspectorビューなどで好きなふうに変えてください。こうすれば色々なキャラクターの特徴が出来ます。
解説
まだ変えるべきところは(けっこう)有りますが、解説します。
まず、物理挙動のためにRigidbodyを足します。もしエラーで、「"Kamipla" no attach "Rigidbody"」的なのが出たら、InspectorでRigidbodyをAdd Componentしてください。アタッチされます。
また、RigidbodyあればCharacter Controller要らないかなと思いましたが、入れなかったところ変な挙動をしたので入れることにしました。
移動先の座標を"movelocation"としてこれを変更することで移動するようにしました。基本的にメソッド内でこれを変えることにしました。
次にメソッドの説明をします。KamiplaMoveは基本的な操作による動きを作ります。Camera.mainでメインカメラを選択して、その前と、横を読み取ります。そしてWキーで前に、A,Dキーで左、右に曲がるようにしました。また、(やりたいのとは少し違いますが)Wキー中にA、Dキーを押していると、斜めに移動できます。これは、Wキーの処理中にA、Dキーの処理をすることで、力が合わさって斜めに動くということです。
StartJumpではログで、どの高さまで飛ぶかを出していますが、違うようです。
CharacterRotationはキャラを移動方向に回転します。その時、コライダーはカメラからして後ろを最初に向いているので、Startで前を向くようにします。
中の処理はプレーヤーキャラクターを動かす - unity学習帳からもらいました。(Unity Manualにもあるようで)つまり、movalocationのyを0として読み取り、その回転度をローテーションスピードの分ずつ移動方向に変えます。
CharacterMoveはmovelocationを読み取って、RigidbodyのMovepositionに入れて居るだけです。ここは、CharacterControllerのMoveでもいいです。
後はほぼ同じです。
実行すると
このようにして値を変えてから実行すると、、、
このように前に進み、、、
このように曲がりながら落ちていき、
このようにななめに曲がりながら進めます。(ちょっと落ちるのが早いかな)