2016-12-01 7 views
0

回転しながら見ているパースポイントを維持するカメラスクリプトを作成しようとしています。ユニティカメラ回転中にパースペクティブを維持する

public void RegisterRotationControls() 
{ 
    var horizontal = CrossPlatformInputManager.GetAxis(InputAxisName.Horizontal.ToString()); 

    offsetX = Quaternion.AngleAxis(horizontal * turnSpeed, Vector3.up) * offsetX; 
    transform.position = player.position + offsetX; 

    transform.LookAt(player.position + PlayerOffset); 
} 

現在、このスクリプトは、カメラが選手を見ているときは、しかし、カメラが位置を移動する自由を持って、まだ回転がセンターに相対性理論を維持する必要があります正常に動作しています。 enter image description here

底が元の(相対的)に対向保持する幾分面倒であり、必要とする手動円形にカメラを移動させる回転を計算

+2

あなたは、プレイヤーを中心とした空のGameObjectの下でカメラの親子を見て、それを回転させるだけでいいですか?その後、カメラをどの方向に向けることができ、それでもプレーヤーの周りを一貫した円で回転させることができます。 – Serlite

+0

それは私がそれをすれば、カメラは親との関係でその視点を維持していますか?そして、私は親からカメラを離れて位置を移動する必要がありますか?親との相対的な位置を移動できますか? –

+0

必要に応じてカメラを移動できます(おそらくローカルで、親のローカルスペース)。しかし、それはあなたが2番目の画像に表示されるように動作する必要がありますが、それを試して、あなたのニーズを満たしているかどうかを確認する必要があります。 – Serlite

答えて

2

をoccuringすべきか示しているが一番上の行は、現在の動作をdipictsあなたは必要以上に多くの数学をする必要があります。

よくある解決策は、空のGameObjectの下にカメラを親にし、そのGameObjectをカメラの周りを回転させたいポイント/オブジェクトにセンタリングすることです。 (これは基本的に多くの計算を内部化し、エンジンを重く動かすことになります)。次に、必要に応じてカメラをローカルで翻訳し、コンテナGameObjectを回転してカメラを円で動かすことができます。

関連する問題