2013-02-21 107 views
1

我試圖讓我自己的第一人稱相機控制統一使用在遊戲手柄上的兩個拇指指甲。我有這個工作正常。然而,當我移動右手拇指棒(一種用於查找左/右&向上/向下的攝像頭開始不斷更新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

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

} 
+0

記住我不知道,如果檢查準確零輸入值是可行的。你可能不得不留下一點缺口,但我無法確定這個差距應該有多大。嘗試嘗試一下。 – 2013-02-21 10:41:53