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