Почему моя камера блокируется между двумя положениями с помощью lerp? - PullRequest
0 голосов
/ 06 мая 2020

я пытаюсь создать скрипт, который позволяет моей камере перемещаться в 4 разных положения (передняя задняя левая правая) с помощью клавиш keyArrows и lerp.

первое движение работает хорошо, но когда я нажимаю другую KeyArrow, моя камера перемещается немного и застревает между первой и конечной позицией.

Вот код:

void Update()
    {
        if (Input.GetKey(KeyCode.UpArrow)){
            Uparr = true;
        }
        if (Input.GetKey(KeyCode.DownArrow)){
            DownAarr= true;
        }
        if (Input.GetKey(KeyCode.RightArrow)){
            Rightarr = true;
        }
        if (Input.GetKey(KeyCode.LeftArrow)){
            Leftarr = true;
        }

        //boolean
        if(Uparr){
            cam.transform.LookAt(target);
            cam.transform.position = Vector3.Lerp(StartPos.position,endPosition1.position,lerpSpeed*Time.deltaTime);
            if (cam.transform.position == endPosition1.position){
                Uparr = false;
            }
        }
        if(DownAarr){
            cam.transform.LookAt(target);
            cam.transform.position = Vector3.Lerp(StartPos.position,endPosition2.position,lerpSpeed*Time.deltaTime);
            if (cam.transform.position == endPosition2.position){
                DownAarr = false;
            }
        }
        if(Rightarr){
            cam.transform.LookAt(target);
            cam.transform.position = Vector3.Lerp(StartPos.position,endPosition3.position,lerpSpeed*Time.deltaTime);
            if (cam.transform.position == endPosition3.position){
                Rightarr = false;
            }
        }
        if (Leftarr){
            cam.transform.LookAt(target);
            cam.transform.position = Vector3.Lerp(StartPos.position,endPosition4.position,lerpSpeed*Time.deltaTime);
            if (cam.transform.position == endPosition4.position){
                Leftarr = false;
            }
        }

знаете, в чем может быть проблема?

1 Ответ

0 голосов
/ 06 мая 2020

Вам необходимо установить для других переменных направления значение false при установке нового направления. Одновременно активны несколько представлений, и поэтому они борются.

if (Input.GetKey(KeyCode.UpArrow)){
    Leftarr = false;
    Downarr = false;
    Rightarr = false;
    Uparr = true;
}

Может быть проще сохранить одну переменную для направления, но для каждого свое.

...