プログラム研究 備忘録

java,C#,Unity等の備忘録です。経済理論も少し。

カメラを追従させる メモ2

・カメラをターゲットに向ける//LookAt関数

・カメラを回転させる

水平回転角度 horaizon

上下回転角度 vertical

カメラと注視点間の距離 distance

この3つの値が必要になる

 

Vector3 relativePos = Quaternion.Euler

(verticalAngle,horizontalAngle,0) *  new Vector3(0,0,-distance);

 

・ユーザー入力による回転の更新

スライド操作を実装したスクリプト内の関数を使う//Moved関数

if(inputManager.Moved()){//ドラッグ入力でカメラのアングルを更新する

GetDeltaPositin関数を使いカーソル移動量を取得する。

 

if (inputManager.Moved()) {
float anglePerPixel = rotAngle / (float)Screen.width;
Vector2 delta = inputManager.GetDeltaPosition();
horizontalAngle += delta.x * anglePerPixel;
horizontalAngle = Mathf.Repeat(horizontalAngle,360.0f);
verticalAngle -= delta.y * anglePerPixel;
verticalAngle = Mathf.Clamp(verticalAngle,-60.0f,60.0f);

 

・障害物を避ける

 

Linecast関数を使用する。Raycast関数とほぼ同じ機能だが、始点と終点を指定できるので使用。

 

実装すると・・・


camera - YouTube

 

カメラ一つでも実装するのに大変ですね。。。

しかしある種公式のような気もするので、そこまで深く考える必要もないのかもしれません。