2017-04-21 104 views
0

簡單的方式來獲得玩家前面的位置在特定距離獲取位置向前恆定距離

 Vectro3 forward = player.transform.forward * distance; 
    Vector3 newPlayerFronPosition= player.transform.position + new Vector3(forward.x, forward.y, forward.z); 
    newPlayerFronPosition= new Vector3(newPlayerFronPosition.x, newPlayerFronPosition.y - 4f, newPlayerFronPosition.z); 
    navigationCanvas.transform.position = newPlayerFronPosition; 
    navigationCanvas.transform.rotation = camRotationToWatch.transform.rotation; 

其實際工作正常,但問題是我的球員向上或向下移動的navCanvas成爲出現版本附近給我的玩家。如何始終保持特定的距離。無論玩家外表上面或向下specfic距離navcanvas顯示。(位置)

disatnceUICam = Vector3.Distance(newPlayerFronPosition, player.transform.position); 

我還記錄的距離和令人驚訝地,當我向上或向下移動的距離是變化。當我仰望下去時,它從6變爲12。

回答

1

如果我理解正確的話,你,你想在你的玩家面前在XZ平面變換從您的播放器的前一組距離的點,你應該嘗試這樣的事:

Vector3 horizontalForward = new Vector3(
     player.transform.position.x + player.transform.forward.x, 
     player.transform.position.y, 
     player.transform.position.z + player.transform.forward.z 
    ).normalized * distance; 

我懷疑你描述正在發生的事情,因爲你的「玩家」變量連接到您的遊戲攝像頭的方向轉變。隨着攝像機向上看,您的前進的世界位置相對於攝像機發生變化。當相機變換圍繞X軸旋轉時,僅使用X和Z會產生變化的距離。也許這圖將說明我的意思好一點:

effect of y vector

對不起斜邊是有點靠不住的,但你的想法吧?

+0

看起來很真實的,但爲什麼不向前使用Y?這是什麼邏輯 –

+0

我加上y水平向前轉發並再次拉開距離成爲可變 –

+0

可愛的回答,你可以解決它 –

相關問題