2017-08-29 102 views
0

我遇到了一個我認爲會是一個相對簡單的問題的障礙。我想通過按「Q」和「E」鍵在Z軸上「滾動」攝像機。使用鍵盤在z軸上旋轉攝像頭

這裏是我寫的代碼,這是連接到我的相機對象:

#pragma strict 

var keyboardSensitivity : float = 10.0f; 
private var rotZ : float; 
private var localRotation : Quaternion; 

function Start() { 
    rotZ = 0.0f; 
} 

function Update() { 
    if(Input.GetKey(KeyCode.Q)) { 
     rotZ += Time.deltaTime * keyboardSensitivity; 
     localRotation = Quaternion.Euler(0.0f, 0.0f, rotZ); 
     transform.rotation = localRotation; 
    } 
    if(Input.GetKey(KeyCode.E)) { 
     rotZ -= Time.deltaTime * keyboardSensitivity; 
     localRotation = Quaternion.Euler(0.0f, 0.0f, rotZ); 
     transform.rotation = localRotation; 
    } 
} 

根據我所知,這應該是所有需要。但是當我按Q或E鍵時,絕對沒有任何反應。爲什麼?

+0

請不要說「沒有任何反應」。這段代碼甚至不應該編譯,因爲'localRotation'沒有聲明。值得注意的是[Unityscript](https://stackoverflow.com/questions/45523239/is-unityscript-javascript-discontinued?s=1|5.6699)已停用。您可能想切換到開始詢問C#問題。 – Programmer

+0

我說「沒有任何反應」,因爲從字面上看什麼都沒發生。當我提出這個問題時,我忘了複製'localRotation',但代碼確實編譯得很好。我使用Unityscript作爲個人偏好,我不認爲不使用C#是導致我現在面臨的問題的原因,但我會在將來的問題中記住這一點。 – JavascriptLoser

+0

我見過有人發佈的代碼甚至沒有在這裏編譯。所以我雖然是其中之一。我提到C#作爲您未來問題的通知。 – Programmer

回答

0

沒有任何反應,因爲您的代碼可能沒有附加到相機或它連接到另一個GameObject。它不能附加到另一個遊戲對象。它必須連接到相機,因爲您引用了transform.rotation,這將影響腳本所附的當前GameObject。

選擇您的相機,然後將腳本拖到它。點擊「播放」,然後按Q或E按鈕。相機應該旋轉。我真的向你推薦Unity項目tutorials

+0

我發現問題是另一段代碼干擾z旋轉,但我會將你的標記標記爲已接受。 – JavascriptLoser

+0

這是另一個可能的原因,如果z從另一個腳本被更改,否則,您的問題中的代碼可能無法正常工作的唯一原因是因爲它不附加到相機或附加到另一個gameobject。 – Programmer