UnityでFPSをつくる その3-4 [ プレイヤーの移動 ]

2020年5月27日

62~66行目、

No.132

52行目の if文から続いています。else文と呼ばれるもので、前に続く if文の条件が不成立の場合に{}内の処理が実行されます。

No.133

65行目の Vector3.zero、これはStatic変数と呼ばれるもので、設計図に定義されている変数の中で、あらかじめメモリが確保されている変数です。
メモリが確保されている = 実体化済みなので newを書かずにそのまま使えます。

No.134

その設計図(クラスや構造体)が何のStatic変数を持っているのかは、VisualStudioでクラス名や構造体名の後に「.」を付けることで一覧が表示されます。

No.135

スパナのアイコンが付いているのがStatic変数、透明のキューブのアイコンが付いているのがStatic関数です。
項目を選択すると、用途の説明が表示されます。

No.136

「Shorthand for writing Vector3(0,0,0).」=「Vector3(0, 0, 0)を省略してVector3.zeroと書けます。」
という意味なので、Vector3.zeroと書けば Vector3(0, 0, 0)として扱われます。
これを playerRigidbody.velocityに渡すことで速度を「」、プレイヤーをその場に止めているわけです。
この処理を書かなくてもキー入力をやめたらプレイヤーは止まりますが、それは前にふれたとおりPlayerやグラウンドのオブジェクトに摩擦が働いているからです。

No.137

Vector3.zero の行をコメントアウトし、摩擦を「0」にしたらどうなるか検証してみます。

No.138

ProjectウィンドウのMaterialsフォルダ内にPhysicMaterialsフォルダを作ります。

No.139

PhysicMaterialsフォルダ内にPhysicMaterialを作成します。

No.140

作成した NewPhysicMaterial を Inspectorウィンドウから Dynamic FrictionStatic Friction を「0」に、Friction Combine を 「Minimum」 にしてください。

No.141

これで、動いている時と静止している時にかかる摩擦が「になり、オブジェクトどうしに摩擦が発生した場合、小さいほうの値を優先する設定になりました。
公式のドキュメントで説明を見たい場合は、右上にある?マークの付いた本のアイコンをクリックしてください。

No.142

ブラウザの新しいタブにドキュメントが開きます。
右上の Language から言語の切り替えができます。

No.143

この操作は PhysicMaterial に限らず、全てのコンポーネントで共通です。
その項目が何を意味するのかわからなかったら、ドキュメントで調べてみましょう。

PlayerにPhysicMaterialを付けます。
Playerオブジェクトを選択 → BoxCollider コンポーネントの Material に NewPhysicMaterial を選択

No.144

この状態から実行して、移動キーを押しっぱなしにしてから離してみます。

No.145

摩擦が無く、停止のスクリプトも書いていない為、 キーを離した後も Playerが移動し続けています。
摩擦の設定を意識できている場合はスクリプトによる停止の記述は不要ですが、最初のうちは見落としがちになるので、移動や停止をスクリプトで制御することを基本にしましょう。
コメントアウトを元に戻し、Playerの PhysicMaterial をNoneにして検証前の状態にします。

以上で[プレイヤーの移動]の説明を終わります。おつかれさまでした!

FPS

Posted by kenji