Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以恒定距离从球员前方获得位置_C#_Unity3d_Unity5 - Fatal编程技术网

C# 以恒定距离从球员前方获得位置

C# 以恒定距离从球员前方获得位置,c#,unity3d,unity5,C#,Unity3d,Unity5,以特定距离获得球员前方位置的简单方法 Vectro3 forward = player.transform.forward * distance; Vector3 newPlayerFronPosition= player.transform.position + new Vector3(forward.x, forward.y, forward.z); newPlayerFronPosition= new Vector3(newPlayerFronPosition

以特定距离获得球员前方位置的简单方法

     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显示器的上方或下方查看特定的距离

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

我还记录了距离,令人惊讶的是,当我向上或向下移动时,距离正在变化。当我从上往下看时,它从6变为12。

如果我理解正确,并且您希望在球员前方的X Z平面上变换一个点,距离球员前方一定距离,您应该尝试以下操作:

    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将产生不同的距离。也许这张图能更好地说明我的意思:


很抱歉斜边有点不稳定,但你的想法是对的?

似乎很正确,但为什么不使用y向前?什么是我在水平前进中添加的逻辑y前进,距离再次变差似乎imgur和我附加的图像出了问题。我已经上传了。希望它能澄清为什么Y分量会导致距离可变。