为什么我的摄像机在两个位置之间使用 lerp 阻挡?

问题描述 投票:0回答:1

我想制作一个脚本,让我的摄像机使用keyArrows和lerp移动到4个不同的位置(前、后、左、右)。

第一次移动效果很好,但是当我按下另一个关键箭头时,我的摄像机移动了一点,并且在第一个位置和最后一个位置之间被卡住了。

这就是代码。

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;
            }
        }

你知道它可能是什么问题吗?

c# unity3d lerp
1个回答
0
投票

当设置新方向时,你需要将其他方向变量设置为false。多个视图同时活跃,因此,它们在战斗。

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

存储一个方向的变量可能会更容易,但要各司其职。

© www.soinside.com 2019 - 2024. All rights reserved.