在 Unity 中将对象移动到玩家前面,基于玩家移动而不是玩家摄像机



我有一个金字塔,应该在设定的时间和距离后移动到玩家面前。如果玩家正在看移动的方向,则一切正常。如果玩家移动一个方向而看向另一个方向,那么他们就永远不会遇到金字塔。我需要做什么才能让金字塔在他们的运动而不是他们的相机前面移动?这是我目前的运动代码:

Pyramid.transform.position = Player.transform.position + Player.transform.forward * PyramidToPlayerMoveDistance; 
        Pyramid.transform.LookAt(Player.transform, Vector3.up);

如果你想将你的"金字塔"定位在玩家的移动方向,你可以找到移动的方向。为此,您首先需要找到速度。速度是新位置和最后一个位置之间的差值。

velocity = newPlayerPos - oldPlayerPos

矢量方向是归一化速度。

direction = velocity.normalized

然后定位金字塔

Pyramid.transform.position = Player.transform.position + direction * PyramidToPlayerMoveDistance; 

这没有经过测试,但应该可以工作。此外,我建议使用线性插值来平滑运动。

Vector3.Lerp(oldPyramidPost, newPyramidPos, Time.deltaTime * speed)

相关内容

  • 没有找到相关文章

最新更新