Unity公式チュートリアルSurvival Shooter日本語実践Chapter.3

3.Camera Setup

第3章では、カメラがPlayerの動きを追いかける機能の実装を行います。動画の時間も短いし、サクッとやっていくでー。

MainCameraの設定

Inspectorでの設定

main cameraのPositionを(1,15,-22)、Rotaitonを(30,0,0)に調整し、PeojectionをPerspectiveからOrthographicに変更する。

Perspective:遠くのものは小さく、近くのものは小さく、遠近法にのっとって表示する
Orthographic:距離に関係なく、オブジェクトそのものの大きさをそのまま表示する

という違いがある。こちらに詳しい。

WisdomSoft ”投影法”
http://www.wisdomsoft.jp/645.html

どんなときにどんな基準で使い分けるのかな?と思ったら同サイトにこんな記述が。

カメラの設定を変更することで、同じサイズの物体は、距離に関係なく同じサイズで描画できます。Unity では、主に 2D ゲームの開発で使われるカメラの設定です。

なるほどねー。でもなんで?という部分は解決されず。保留して先へ進もう。

カメラのSizeを4.5に、Backgroundを真っ黒に変更したらInspectorからの設定は完了。次はCameraのスクリプトを書いていく。

MainCameraのスクリプト

変数を宣言していく

public Transform target
カメラが追いかけるプレイヤーのPositionをここに格納する。InspectorからPlayerをD&Dするとき、GameObjectでなくても、Transformで宣言すれば直接Positionが取得できることを初めて知りました。

public float smoothing
カメラの移動の滑らかさ。この時点ではよくわからないが、実装後に数値をいじってみると分かる。

Vector3 offset
プレイヤーからカメラへのベクトルを格納する。カメラとプレイヤーの相対的な位置関係を表す。動画では”vector from  the camera to the player”と言っているのに、startメソッドの中でプレイヤーからカメラへのベクトルの式を代入するのが解せない。まあいいや。これも保留。

Startメソッド

上述の通り、offsetにプレイヤーからカメラへと延びるベクトル=プレイヤーとカメラとの相対的な位置関係を表すベクトルを代入する。

FixedUpdateメソッド

カメラは、phisycsな動きをするPlayerを追うので、その移動に関しては同様にFixedUpdateへ記載する。

カメラを移動させる先のPositionを格納する。Playerが存在するPositionに、両者の位置関係を表すoffsetを加算することでそれが導ける。

実際にカメラのPositionを移動させる。
Vector3.Lerp(ベクトルa,ベクトルb,float)は、ベクトルaとベクトルbの中間地点のベクトルを返す。floatは0~1の値を取り、0.5ならちょうど真ん中、0.8ならベクトルb側に80%寄った地点のベクトルを返す。下記が詳しい。

PlayerをPrefab化する

なんでこのタイミングなのかはわからないですが、PlayerをPrefab化しておきます。

実装確認

スクリプトをMainCameraにアタッチしたら実装確認です。今回はトラブルなく無事に動く。スムーズにいって何よりです。

ちなみに、Time.deltaTimeは1/50なので、smoothingに500とか設定して1より大きくなるようにしたらどうなるのか試してみましたが、50の時と変わらず。1以上はすべて1として使われるっぽいですね。

第4回はコチラ

第2回はコチラ

2件のコメントがあります

コメントを残す

メニューを閉じる