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