Unityで新しいゲームを作り始めました!
タイトル通り,一人称視点のゲームです.
一人称視点とはFPSに代表されるような,
プレイヤーの目線でプレイするゲームです.
FPS以外だとミラーズエッジとか
ポータル 2とかがありますね.
First Person Controller
一人称視点のゲームをUnityで作る時はFirst Person Controllerを
使うのが手っ取り早いと言う事で,実際に試してみました.
ActionScript入門Wiki - Unity - 一人称視点で移動する
確かにPC上でゲームを作る分にはこれで十分な気がしますが,
あくまでメインはiOS端末なのでちょっと役不足…
具体的な問題点は
- iOSでは移動手段が無い
- 視点移動に違和感
で,1はキーボードもコントローラーも無いので当然ですね.
2に関しては画面をタッチした所に応じて向いている方向を変える仕様,
つまりディスプレイ上部をタッチすると,いきなり上を見るという感じです.
これを以下のように変更します.
- バーチャルパッドを作成し,それを用いて移動
- タッチしている指が動いた分だけ視点が変わる
First Person Controllerに変更を加えてもいいのですが,
今回は一からやる事に,多分そっちの方が早いと思うので.
あと問題点では無いですが,First Person Controllerで
C#とJsのスクリプトが混じっていたの気になる今日この頃です.
用途でC#とJsは使い分けた方がいいのだろうか…マァイイヤ
プレイヤー準備
プレイヤーといっても写ることが無いので,特に見た目は用意せず,
カメラを直接動かしていこうと思います.
まず,カメラを選択し,
Component - Physics - Character Controller
を追加.
Character Controllerとは
Character Controller は、Rigidbody 物理特性を使用しない 3 人称または 1 人称のプレイヤー制御も主に使用されます。
このCharacter Controllerを用いてカメラを操作していきます.
移動
とりあえずキーボード入力で移動.
W,A,S,Dキーが入力されているかを見て,
その方向の速度を設定.
さらにCharacter Controllerには重力が掛かっていないので,
y方向には重力を掛け,Moveで移動させています.
最後にTime.deltaTimeを乗算しているのは,
単位時間当たりの移動距離を一定にするためです.
ActionScript入門Wiki - Unity - 単位時間当たりの移動距離を一定にする
キー入力確認の部分はInput.GetAxis("Horizontal")などを使えば,
キーボード以外の入力装置にも対応できますが,
Aキーと左キー両方が同じ判定になってしまうので,
今回はInput.GetKeyを使用しています.
長くなってしまったので,今回はここまで.