2017-04-21 105 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

可爱的回答,你可以解决它 –

相关问题