Unity3D相机不断移动

时间:2013-02-21 10:26:39

标签: c# camera unity3d

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

这是我的游戏手柄移动代码:

  // 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提供的第一个人物控制器上。

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

1 个答案:

答案 0 :(得分: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);
    }

}