在Unity中,根据播放器的运动而不是播放器的照相机,将对象移动到Unity播放器的前面

问题描述 投票:0回答:1

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

Pyramid.transform.position = Player.transform.position + Player.transform.forward * PyramidToPlayerMoveDistance; 
        Pyramid.transform.LookAt(Player.transform, Vector3.up);
c# unity3d game-development
1个回答
0
投票

如果您想将“金字塔”定位于播放器的运动方向,则可以找到运动方向。为此,您首先需要找到速度。速度是新位置和最后位置之间的差。

velocity = newPlayerPos - oldPlayerPos

矢量方向是归一化的速度。

direction = velocity.normalized

然后放置金字塔

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

未经测试,但可以正常工作。另外,我建议使用线性插值来平滑运动。

Vector3.Lerp(oldPyramidPost, newPyramidPos, Time.deltaTime * speed)
© www.soinside.com 2019 - 2024. All rights reserved.