すぐに固まるパソコンを使う。

すぐに固まるパソコンを使って色々します(実はそんなすぐでもない)。基本的にプログラミング系が多いです。たまに違うことします。

Immediately Freeze!

重くなるUnity 26 「Shall we Move? - 制御する」

タイトル変えました。そっちのほうが文字をとらないので、、、

 

今回はCharacter Controllerを(ちょっと)使っていきます。と言ってもRigidbodyも(主に)使います。Rigidbodyを使えば慣性が働くようになるからです。

 

Script : KamiplaController.cs

考えて、テストしまくって作ってきた(サイトも参照した)のがこれ、

gist.github.com

speedrotationspeedなどはInspectorビューなどで好きなふうに変えてください。こうすれば色々なキャラクターの特徴が出来ます。

解説

まだ変えるべきところは(けっこう)有りますが、解説します。

まず、物理挙動のためにRigidbodyを足します。もしエラーで、「"Kamipla" no attach "Rigidbody"」的なのが出たら、InspectorRigidbodyAdd 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として読み取り、その回転度をローテーションスピードの分ずつ移動方向に変えます。

 

CharacterMovemovelocationを読み取って、RigidbodyMovepositionに入れて居るだけです。ここは、CharacterControllerMoveでもいいです。

後はほぼ同じです。

実行すると

このようにして値を変えてから実行すると、、、

f:id:norlself66:20150330120934p:plain

このようにに進み、、、

f:id:norlself66:20150330121003p:plain

このように曲がりながら落ちていき、

f:id:norlself66:20150330121038p:plain

このようにななめに曲がりながらめます。(ちょっと落ちるのが早いかな)