1

我正在尝试统一制作我自己的第一人称相机控件,在游戏板上使用两个拇指杆。我有这个工作正常。但是,当我移动右手拇指杆(用于向左/向右和向上/向下看的拇指杆时,相机开始不断更新。

这是我的手柄移动代码:

  // Update is called once per frame
void Update()
{

    float speed = transform.localEulerAngles.y + Input.GetAxis("LeftRight") * sensitivityX;

    rotationY += Input.GetAxis("UpDown") * sensitivityY;
    rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);

    transform.localEulerAngles = new Vector3(-rotationY, speed, 0);

}

为了控制左拇指杆,我简单地将我的脚本附加到 Unity 提供的第一人称角色控制器上。

我知道我的代码正在更新每一帧,但我认为它只会在我按下右拇指杆时更新。如果不是这种情况,有没有办法可以限制它仅在我移动右拇指杆时增加?

4

1 回答 1

1

Update() 中的代码确实会在每一帧中执行。

您注意到的运动主要是由于transform.localEulerAngles每帧都被调用。速度参数从不为零,因为它基于transform.localEulerAngles.y

您可以检查轴值是否不为零,如下所示:

void Update()
{

    float inputValueLeftRight = Input.GetAxis("LeftRight");
    if(inputValueLeftRight > 0 || inputValueLeftRight < 0)
    {
       float speed = transform.localEulerAngles.y + inputValueLeftRight * sensitivityX;    
       transform.localEulerAngles = new Vector3(-rotationY, speed, 0);
    }

    float inputValueUpDown = Input.GetAxis("UpDown");
    if(inputValueUpDown > 0 || inputValueUpDown < 0)
    {
       rotationY += inputValueUpDown * sensitivityY;
       rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);
    }

}
于 2013-02-21T10:37:09.907 回答