2016-10-10 149 views
1

我有一個由兩部分組成的槍(1是手柄,2是噴嘴)。當我拍攝目標時,我想旋轉噴嘴。物體不能繞其軸線旋轉

I want to rotate the Nozzle like this

我使用行下面的代碼我的火函數內部

gunNozzle.transform.Rotate(0, 0, 10); 

是在增加的旋轉值,但結果是不同的。這裏是完整的功能:

void Update() 
{ 
    if (Input.GetKeyDown(KeyCode.P)) 
    { 
     isOut = true; 
    } 
    if (isOut) 
    {  
     playerAnim.CrossFade("gunplays", 0.03f); 
     gunNozzle.transform.Rotate(0, 0, 10); 
     audioSource.Play(); 
     GameObject cloneArrow = (GameObject)Instantiate(theArrow, thePos, Quaternion.identity); 
     cloneArrow.transform.position = thePos; 
     cloneArrow.transform.rotation = this.transform.rotation; 
     isOut = false; 
    } 
} 

這似乎是一件簡單的事情,但我卡住了。

下面是結果:

Here is the result of the above code

+0

「結果不同」是什麼意思? – Sayse

+0

意味着,在噴嘴中沒有旋轉,我也添加了結果,請檢查一次.. –

+0

如果您看到我的第一個gif,當我通過界面手動旋轉時,'z'的值正在增加,並且隨着它的位置x的位置和y的位置也發生了變化。 –

回答

0

你的參數transform.Rotate不看起來是正確的我。應該是這樣的

gunNozzle.transform.Rotate(Vector3.right * Time.deltaTime); 

鈮:矢量方向可能是錯誤的在我的例子。

+0

你也確定gunNozzle被設置爲正確的對象,它不是旋轉別的東西在屏幕外? –

+0

抱歉,不,不,不,我的激光方向有一定程度的改變,我也嘗試過不同的方向也..沒有結果 –

+0

嘗試用gunNozzle.SetActive(false)替換;這應該隱藏槍管。如果它沒有,那麼'gunNozzle'對象沒有被設置爲正確的對象(或者那段代碼沒有被觸發 - 也許嘗試添加一個控制檯日誌語句) –

0

嘗試在Rotate()中包含Space.Self或Space.World