Void Update没有足够快速更新

时间:2015-05-31 06:23:32

标签: android function unity3d

我只是想为Android游戏创建一个摄像头,你可以用它来缩放和移动x轴,我想限制这个摄像头。例如,我希望当orthographicSize大于我的变量max_zoom或小于我的变量min_zoom时,相机会停止缩放。

问题在于,如果用户缩放得非常快,则更新功能不会快速更新,例如,即使我的min_zoom变量等于1,orthographicSize也等于0.995。这是我的条件:

if(GetComponent<Camera> ().orthographicSize > min_zoom && GetComponent<Camera> ().orthographicSize < max_zoom) {
    // .. change the orthographic size based on the change in distance between the touches.
    GetComponent<Camera> ().orthographicSize += deltaMagnitudeDiff * orthoZoomSpeed;

    // Make sure the orthographic size never drops below zero.
    GetComponent<Camera> ().orthographicSize = Mathf.Max(GetComponent<Camera> ().orthographicSize, 0.1f);

}

所以问题是用户无法缩小。

2 个答案:

答案 0 :(得分:0)

好的,所以我终于找到了缩放的解决方案。我只是删除了条件,在我的脚本结束时,我使用Mathf.clamp在我的min_zoom和max_zoom之间设置orthographicSize。我有的最后一个问题,但它不是关于缩放,是我无法在右侧和左侧进行修复限制,因为当您缩放时,限制的协调变化,但这是另一个主题的主题。无论如何,谢谢你的答案。

答案 1 :(得分:-1)

为什么你为每个函数调用GetComponent<Camera>(),你可以在启动时调用它就足够了。

    Camera cam; 

    void Start () 
    {
        cam = GetComponent<Camera> ();
    }

    // Update is called once per frame
    void Update () 
    {
        if( cam.orthographicSize > min_zoom && cam.orthographicSize < max_zoom) 
        {
            cam.orthographicSize += deltaMagnitudeDiff * orthoZoomSpeed;

            cam.orthographicSize = Mathf.Max(cam.orthographicSize, 0.1f);

        }
    }