Vector3.Lerp Unity3D

时间:2017-04-11 23:13:39

标签: c# unity3d

我正在使用Vector3.Lerp在我的Player GameObject之后移动我的相机。由于我的游戏机制,我的玩家游戏对象的位置可以“传送”并跳转几个向量,这会改变相机正在朝向的目标位置。

由于目标位置在lerp中间发生变化,因此会导致断续,并且由于lerp的目标位置在lerp中间发生变化,导致相机跳转/切断。

我如何解释这一点,并使相机平稳地移向新位置“

2 个答案:

答案 0 :(得分:1)

对于一个lerp,你可以在它之间传递开始,结束和百分比。

听起来你正在用lerp改变结局。您需要做的是确定新开始/结束时当前摄像机位置的百分比,并更新您的百分比值以适应。

例如:

0到10之间,当前值为5将是0.5的百分比。如果您将结束更改为20,则现在需要将百分比设置为0.25以避免口吃。

另一种方法是欺骗并始终在当前(而不是开始)和目标之间使用0.9的百分比(根据需要进行调整)。这会滥用lerp,但如果你的位置更新很小,会给你一个缓和的副作用,应该足够好。

答案 1 :(得分:0)

代替基于两者之间百分比的正常 A 到 B 位置 lerp,您可以使用设定的速率将相机移向玩家。

cameraTransform.position = Vector3.Lerp(cameraTransform.position, player.position, Time.deltaTime * moveSpeed);

虽然这不会达到 1(给定 moveSpeed 小于 1/deltaTime),但它会平稳地将您的相机移向目标。