【问题标题】:Target changes during Vector3.Lerp Unity3DVector3.Lerp Unity3D 期间的目标更改
【发布时间】:2017-09-07 12:50:32
【问题描述】:

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

这会导致卡顿,因为目标位置在 lerp 中间发生变化,并且由于 lerp 的目标位置在 lerp 中间发生变化而导致相机跳跃/卡顿。

我该如何解决这个问题,并让相机顺利移动到新位置”

【问题讨论】:

  • 你为什么不用Vector3.MoveTowards();

标签: c# unity3d


【解决方案1】:

对于一个 lerp,您将开始、结束和百分比传递给它以进行插值。

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

例如:

当前值为 5 的 0-10 之间的 Lerping 将是 0.5 的百分比。如果将 end 更改为 20,则现在需要将百分比设置为 0.25 以避免卡顿。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多