[英]How to access the main Camera in Unity to make a zoom script?
當您單擊多維數據集時,我試圖制作一個簡單的縮放腳本。 我希望它在立方體上放大,但是找不到適合我的主相機縮放方法。 我嘗試了幾種不同的方法。 這是當前的。 我將其放在OnMouseDown
,但仍然無法正常工作,因此我將其移動以進行更新以查看是否可以正常工作。
void Update ()
{
if(Input.GetKeyDown("z"))
{
Debug.Log("Pressed Z");
zoomedIn = !zoomedIn;
}
if(zoomedIn == true)
{
Debug.Log("True!");
Camera.main.GetComponent<Camera>().fieldOfView = Mathf.Lerp(GetComponent<Camera>().fieldOfView, zoom, Time.deltaTime*smooth);
}
else
{
Camera.main.GetComponent<Camera>().fieldOfView = Mathf.Lerp(GetComponent<Camera>().fieldOfView, normal, Time.deltaTime*smooth);
}
}
似乎沒有將zoom
和normal
分配給正確的值。 還要確保您處於Perspective
視圖,而不是“ Orthographic
視圖。
如果要使用
Orthographic
視圖,只需將fieldOfView
所有用法更改為orthographicSize
然后將zoom
fieldOfView
更改為合理的水平,例如5個單位。
normal
應該是攝像機的初始fieldOfView
,在Start
檢索到:
// camera is a private field
private Camera camera;
camera = GetComponent<Camera>();
normal = camera.fieldOfView;
zoom
的值應小於檢查員分配的normal
值(初始fieldOfView
),以便能夠“放大”。
您的條件分支將更改為
if (zoomedIn) // Same as if (zoomedIn == true)
{
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoom, Time.deltaTime * smooth);
}
else
{
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, normal, Time.deltaTime * smooth);
}
或者,一個更簡潔的版本:
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoomedIn ? zoom : normal, Time.deltaTime * smooth);
我還建議使用協程來執行此操作,而不要在Update
中執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.