我從一個小小的自上而下的遊戲開始,並希望在開始遊戲時計算相機變換。Unity讓玩家集中在屏幕上
相機沒有設置爲90度,它應該像70一樣。旋轉它時,我需要計算Z上的差值以使播放器保持在屏幕中間。
public Transform player; // player object
float offsetY = 30; // distance on y
float rotationAngleX = 70; // rotation when looking down
private void Start()
{
player = Globals.GetPlayerObject().transform; // reference
transform.Rotate(rotationAngleX, transform.rotation.y, transform.rotation.z); // rotate the camera down
transform.position = new Vector3(player.position.x, player.position.y + offsetY, player.position.z); // move it to the player
}
所以我需要在這裏計算,有中間的球員呢?它應該始終有效,所以如果我改變y的高度或者將相機旋轉80度或60度,計算也應該起作用。
謝謝!
嘿,這看起來不錯。 當寫'float offsetZ = offsetY * Mathf.Tan(Mathf.Deg2Rad(90f - rotationAngleX));'編譯器說,'Mathf.Deg2Rad'不能像方法一樣使用。 這是一個值。所以我試着寫 'float offsetZ = offsetY * Mathf.Tan(Mathf.Deg2Rad *(90f - rotationAngleX));' 但是這並不起作用,玩家停留在屏幕的底部。 – Question3r
哎呦,固定。如果您執行'Debug.Log(offsetZ);'',您在70度旋轉處獲得offsetZ值,在30處獲得y值?它應該與數學(〜10.9f)一致。你是否將偏移量應用於相機z位置? – ryeMoss
您可以在開始時使用光線投射。 – Everts