FPSを作ってみよう1-FirstPersonCharacterを使ってみる-

記事内に広告が含まれています。

今回から『FPSを作ってみよう』というカテゴリを作り、少しづつFPSゲームを作っていく記事を作成したいと思います。
FPSを作りたい方が結構いるみたいです(わたくしの勝手な推測を含む)。

FPSってFirstPersonShooterの略だったんですね、FirstPersonShootingだと思ってました。
あれ?違う?(^_^;)

今までの記事では、機能毎に新しくスクリプトを作成していたので、少しづつ作りたい人には少し不便だったかもしれません。

と言っても、すべての記事を段階的に作成していく記事にするわけでなく、FPSに関してだけカテゴリを分けて作ってみようと思います。

FPS以外のゲームの機能に関しては、今まで通りです。

あらかじめ言及しておきますが、ゲーム作り初心者向けになります。
機能を追加していくスピードもゆっくり進み、いきなり難しくならないようにしていきたいと思います。

ある程度ゲームっぽい感じに仕上げたいところですが、いかんせんわたくし自身がFPSが作れるかどうかわかりませんので、どの程度まで作れるかわかりません。

また、このカテゴリ以外の記事内容へのリンクがあり、その内容を理解する必要が出てくる項目も多々ありますのでご了承ください。
わたくしの能力不足で先に進まない事もありえます(+_+)

これだけ言い訳を入れておけば途中で投げ出しても許してもらえるかな・・・・(^_^;)

スポンサーリンク

Standard AssetsのFPSControllerを設置する

UnityのStandard Assets内にあるFPSControllerは、FPSを作る時に必要なキャラクターの機能を搭載しているので、これをキャラクターモデルに設定すればキーボードとマウスを使った主人公キャラクターの移動や視点変更、ジャンプ等の機能が使えます。

ただスクリプトがC#で書かれている所、当ブログではJavaScriptでスクリプトを書いている所(今はC#へと完全に切り替えました)、
スクリプトを変更する時に、既存のスクリプトを解析しなければいけない点を踏まえてこの機能は使いません。
今回はFPSの動きを確認する為に使用します。

もちろんFPSControllerを使って改造していくのもいいと思います。
というかFPSの機能を標準で搭載してくれてるのに使わない方がもったいない気もしますが・・・・(^_^;)
わたくしは一から作っていく事にします。(^_^)/

まずは、Unityのインストール時に入っているStandard AssetsのFPSの機能を使って動きを確認してみます。

Unityインストール時にStandard Assetsのチェックを入れなかった人は、UnityからStandard AssetsをダウンロードするかAsset Storeからもダウンロード出来ます。

FirstPersonCharacter

Assetsフォルダの

Standard Assets→Characters→FirstPersonCharacter→Prefabs→FPSController

をヒエラルキーにドラッグ&ドロップしてください。

RigidBodyFPSControllerというのもありますが、こちらはRigidbodyとCapsuleColliderを使ってキャラクターを移動させ、
FPSControllerはCharacterControllerを使ってキャラクターを移動させます。

Unityではキャラクターを動かす時にRigidbody+コライダ、またはCharacterControllerを使います。
なのでどちらを使ってもOKです。

多少違いはありますが、わたくしの場合CharacterControllerを使ってキャラクターを動かします。

FPSControllerを見るとCharacterControllerの他にRigidbodyも取り付けてあり混乱しますが、とりあえずここでは気にせずいきましょう。

(基本的にはゲームオブジェクトを動かして他のゲームオブジェクトに力を加えたい場合はRigidbodyを取り付けておきます)

FirstPersonCharacterのインスペクタ

ヒエラルキーに設置したFPSControllerを選択するとインスペクタに↑のように表示されます。

TransformのYを2に設定しておきます。
これはキャラクターをステージに登場させた時に、ステージにめり込まないように少し上から登場させる為です。

FirstPersonControllerコンポーネントの項目でパラメータを変更するとキャラクターの動きを変更出来ます。

FPSControllerの設定

Is Walkingは現在歩いているかどうか?のフラグです。
Walk Speedは歩くスピード。
Run Speedは走るスピード。
Runstep Lengthtenは走っている時の足を付く速さを指定します。高い数値を指定するとカメラの上下動が早くなります。
Jump Speedはジャンプ力。
Stick To Ground Forceは地面の方向にY座標の値を足して、確実に設置させる為の数値みたいです。
Gravity Multiplierは重力値の計算をする時の補正値?

MouseLookはマウスでの視点変更のパラメータです。

XSensitivityは横向きの移動速度。
YSensitivityは縦向きの移動速度。
Clamp Vertical Rotationにチェックを入れると視点の限界角度を設定します。
Minimum Xは縦方向の最小角度。
Maximum Xは縦方向の最大角度。
Smoothにチェックを入れると視点の動きがスムーズに動くようになります。
Smooth Timeはスムーズに遷移する時の速さ。
Lock Cursorにチェックを入れるとゲーム中にマウスカーソルを非表示にします。

Use Fov KickはカメラのFieldOfViewを変更するかどうか?みたいですがよくわかりません。
Fov Kickの項目もよくわかりません。

Use Head Bobは歩きを表現する為にカメラを上下に振るかどうかです。
Horizontal Bob Rangeは横に振る時の長さ。
Vertical Bob Rangeは縦に振る時の長さ。
Bob Curveはグラフで表したカメラの動きの基本値。
Verticalto Horizontal Ratioは上下に動く間隔。

Jump Bobはジャンプの時のカメラの上下動についてです。
Bob Durationはカメラの上下動にかかる時間。
Bob Amountはカメラの上下動の幅。

Step Intervalは足音を鳴らす間隔です。
Footstep Soundsは足音、ジャンプ、着地時の音声を指定します。

一部わからないパラメータもありますが、解析した結果はこんな感じになります。

FPSControllerの動きを確認する前にキャラクターが移動する土台を作ります。
ヒエラルキー上で右クリックし3D Object→Cubeを選択し、名前をYukaと変更します。

床のインスペクタ

Yukaを選択するとインスペクタは↑のようになります。
TransformのXとZを100に設定します。
これでFPSControllerが移動する床の作成が完了しました。

FPSControllerを使って床の上の移動を確認する

それでは、FPSControllerの機能を使って床の上を移動させてみましょう。

ここでキャラクターと言わずFPSControllerと言っているのは、キャラクターモデルにFPSControllerを取りつけていないからです。

キャラクターモデルは視覚的に必要ですが、床との当たり判定や移動等はFPSControllerが行っているので、キャラクターモデルがなくても問題ありません。

それではUnityの実行ボタンを押してください。

キャラクターの移動はA(左)、W(前)、S(後)、D(右)または↑↓←→のキーで移動出来ます。
左Shiftキーを押しながら移動キーを押すと走ります。

キャラクターの向きはマウスで向きを変えるので、移動キーで左に移動してもマウスを動かさなければ、前方を向いたまま左に移動するカニ歩きになります。
またSpaceキーを押すとジャンプします。

またUnityの実行ボタンを押すと、マウスカーソルが非表示になるので、実行を停止する事が出来なくなります。
マウスカーソルを表示させるにはEscキーを押してください。

いきなりマウスカーソルが消えると焦りますが、Escキーを押すと表示されると言う事を覚えておいてください。

FPSControllerの動きの確認

↑が実行例です。

上の例では、Sceneタブで確認しているので3人称視点になっていますが、Gameタブで実際の画面を確認すると1人称視点になっている事がわかります。

キャラクターが動くとカメラが上下に動きキャラクターの目の動きを表現してますね。
FPSではカメラがキャラクターの目になるので、こういった演出も必要になりますね・・・・大変そう((+_+))

また、マウス操作で視点を変更するとキャラクターの向きが変わりますが、FPSControllerでは

FPSControllerを設置したヒエラルキー

↑のようにFPSControllerの子要素に、FirstPersonCharacterがあり、そこにカメラが設置されています。

マウスの動きで横を向いた時は、親要素のFPSControllerのY軸の角度を変更し、マウスの動きで上下を向いた時は子要素のFirstPersonCharacterのX軸の角度を変更しています。
移動方向は親要素で、視点の方向は子要素にしています。

親要素のX軸の角度を変更すると、移動キーを押した時に空中の方向に歩いていこうとする為、おかしい動作になってしまうのかも。
移動方向と視点の方向は別にするってことですね。

ここら辺の機能を作成する時は参考にしよう(-.-)

次回から作っていくFPSの機能について

さて、今回はUnityに標準装備されているFPSControllerを使って動きを確認してみました。

これから自前でキャラクターの動きを作成していくので、ある程度どのような動きにするか知っておく必要があるので、FPSControllerを使ってみましたが、
一から作成すると色々大変そうですね・・・(^_^;)

次回はAsset Storeでキャラクターをダウンロードして、キャラクターの移動の機能を取りつけるところまでやってみようと思います。

以前の記事で、キャラクターの移動の機能は作っているので、スルーしておきたいところですが、再確認と言う意味も込めてまた作ってみましょう。
2度手間な気がしますが・・・・。

あぁ・・・ある程度機能を完成させてから記事を書き始めればよかった・・・・(^_^;)
機能が出来るかわからない状況でカテゴリまで作ってしまった(-_-)

タイトルとURLをコピーしました