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分量会导致距离可变。