以恒定距离从玩家前方获取位置
Get position from player forward at constant distance
在特定距离获取玩家前方位置的简单方法
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;
我怀疑你所描述的情况正在发生,因为你的 'player' 变量的变换与你的游戏相机的方向有关。当相机向上看时,你的前锋的世界位置相对于相机发生变化。当您的相机变换围绕 X 轴旋转时,仅使用 X 和 Z 将产生不同的距离。也许这张图能更好地说明我的意思:
抱歉,斜边有点不靠谱,但你的想法对吗?
在特定距离获取玩家前方位置的简单方法
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;
我怀疑你所描述的情况正在发生,因为你的 'player' 变量的变换与你的游戏相机的方向有关。当相机向上看时,你的前锋的世界位置相对于相机发生变化。当您的相机变换围绕 X 轴旋转时,仅使用 X 和 Z 将产生不同的距离。也许这张图能更好地说明我的意思:
抱歉,斜边有点不靠谱,但你的想法对吗?