unity 렌즈 줌 줌 줌 방식 실현

2292 단어 unity
카메라 객체를 먼저 가져오려면 다음과 같이 하십시오.
        //camera = GetComponent();  // 
        //GameObject.FindWithTag("MainCamera") // Tag 
         // 
        camera = Camera.main; 
방식1: 표지 위치로 근원 두 가지 상태 전환을 제어하고 한 번에 근원을 당긴다.
    private bool isFar = true;
    private void Zoom1()
    {
        if (Input.GetMouseButtonDown(1))
        {
            // 
            isFar = !isFar;
            if (isFar)
            {
                //  20  --》 60
                camera.fieldOfView = 60;
            }
            else
            {
                //  60 --》 20
                camera.fieldOfView = 20;
            }
        }
    }
방식2: 점점 가까워지고 멀어지다
    private void Zoom2()
    {
        if (Input.GetMouseButtonDown(1))
        {
            // 
            isFar = !isFar; 
        } 
        if (isFar)
        {
            //  20  --》 60
            if (camera.fieldOfView < 60)
                camera.fieldOfView += 2;
        }
        else
        {
            //  60 --》 20
            if (camera.fieldOfView > 20)
                camera.fieldOfView -= 2;
        }
    }
방식3: 속도의 동적 변화, 목표에 빨리 접근할 때 느리다
    private void Zoom3()
    {
        if (Input.GetMouseButtonDown(1))
        {
            // 
            isFar = !isFar;
        }
        if (isFar)
        {
            //  20  --》 60        Lerp( 、 、 )
            camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 60, 0.1f);
            //Vector3.Lerp
            //Quaternion.Lerp
            //Color.Lerp
        }
        else
        {
            //  60 --》 20
            camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 20, 0.1f);
        }
    }
방식4: 여러 등급의 축소를 그룹으로 제어합니다
    //60    50  40  30    20  
    public float[] zoomLevels;
    private int currentLevel;
    private void Zoom()
    {
        if (Input.GetMouseButtonDown(1))
        {
            // 
            //currentLevel++;
            //currentLevel = currentLevel < zoomLevels.Length - 1 ? currentLevel + 1 : 0;
            currentLevel = (currentLevel + 1) % zoomLevels.Length;
        }
        camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoomLevels[currentLevel], 0.1f); 
    }

좋은 웹페이지 즐겨찾기