2017-04-17 156 views
0

字符是父對象,並且具有相機對象作爲其子對象(FPS類型)。移動速度超過父級遊戲對象的兒童遊戲對象

相機對象有一個腳本,它會'拋出'raycast來檢測它前面的對象。

相機對象有一個「Crosshair」子對象,它有一個腳本「ShowCrosshair」。

Character <- Camera <- Crosshair. 

預期的行爲應該已經:我移動鼠標上下,相機圍繞y軸旋轉,並與它一起十字物體移動在屏幕中心順利剩餘。

但是,無論何時我向上/向下移動鼠標,十字準線移動的速度都比相機可以旋轉並且不在視線範圍內。

這裏是我的相機旋轉代碼:

//vertical is float and is initially zero and transform is for the current gameObject i.e Camera 
vertical -= Input.GetAxis("Mouse Y"); 
transform.localRotation = Quaternion.Euler(new Vector3(vertical, 0.0f, 0.0f)); 

此腳本連接到相機的對象。

希望十字線可以隨相機移動,這就是爲什麼它被相機對象所控制。

回答

0

我覺得你不必要的行爲happends因爲每當你移動,旋轉或縮放父把一切在孩子的受到了影響,因此,當你旋轉的攝像頭,十字線會隨之移動,然後你旋轉十字導致它再次旋轉,然後熄滅。

+0

這就是我想要發生的事情。我不想要的是十字線對象移動速度比相機對象快。 –

+0

你確定它移動的更快,因爲它移動了兩次? – pasotee

0

它看起來像你旋轉繞X軸,而不是Y(垂直)在這一行:

transform.localRotation = Quaternion.Euler(new Vector3(vertical, 0.0f, 0.0f)); 

而且你也許應該由增量時間乘以輸入的影響,否則將移動得太快。

vertical -= Input.GetAxis("Mouse Y") * Time.deltaTime; 

但我不認爲這是你的問題。您評論說該腳本已附加到Camera。它是否也附加到Crosshair?因爲如果是這樣的話,你會得到雙重輪換。如果不是,看看哪些腳本可能會改變Crosshair的輪換。如果您只是移動相機,則根本不需要任何旋轉Crosshair的任何東西(因爲它將隨其父母移動)。