车辆抽动.

所以我编辑了我的问题,因为我忘记给你看一个相机脚本。也许问题就在那里。我只是相信,即使在编辑旧问题之后,也绝对不会有人阅读编辑后的文章。所以我创建了一个新问题。


所以我有这样的问题。我试着让电车动起来。为此,我从 Asset Store“Bezier Path Creator”下载了一个脚本:https ://assetstore.unity.com/packages/tools/utilities/b-zier-path-creator-136082 。它很好用。之前需要创建第三人称相机。在写了一个简短的脚本后,我看到车辆在加速后开始抽动。我坐了几天试图解决这个问题,我看到了一件事。如果删除* Time.deltaTime,则不再有抽搐,但对 FPS 有依赖性(这是可以预见的)。此外,如果单击暂停按钮并逐帧查看,则不会出现抽搐。我该怎么办?


有一些代码我有问题:


  switch (acceleration) {

  case -1:

    acc = -12F;

    break;

  case -2:

    acc = -15F;

    break;

  case -3:

    acc = -18F;

    break;

  case 0:

    acc = 0.000f;

    break;

  case 1:

    acc = 9f;

    break;

  case 2:

    acc = 12f;

    break;

  case 3:

    acc = 17.1f;

    break;

  }


  if (Input.GetKeyDown ("e")) {

        acceleration++;

  }


  if (Input.GetKeyDown ("q")) {

        acceleration--;

  }


  if (acceleration < -3) {

        acceleration = -3;

  }


  if (acceleration > 3) {

        acceleration = 3;

  }


if (speed > 40.0f) {

  speed = 40.0f;

  saveSpeed = speed;

  speed = saveSpeed;

} else if (speed >= 0.0f && speed <= 0.03f && acceleration == 0) {

  speed = 0.0f;

} else if (speed <= 0.0f && speed >= -0.03f && acceleration == 0) {

  speed = 0.0f;

} else if (speed <= 40.0f) {

  speed += ((Time.time - startTime)/1000)*(-acc);

}


// Taking a piece of Asset Store code



transform.rotation = pathCreator.path.GetRotationAtDistance(distanceTravelled);

transform.position = pathCreator.path.GetPointAtDistance(distanceTravelled); // I guess the problem is somewhere there

所以有 Asset Store 脚本中的GetRotationAtDistance方法GetPointAtDistance:


慕桂英3389331
浏览 96回答 1
1回答

慕桂英546537

我曾经遇到过类似的问题,这个链接帮助了我很多。您遇到的问题是由于 The camera being 3rd person and not parented to the object it is following.问题是目标对象在移动时会在相机之前移动,从而导致卡顿,因为相机紧跟在对象之后移动。尝试将相机脚本放入LateUpdate,但如果这不起作用,那么我建议检查上面链接的链接。该链接讨论了插值,它在不增加您的物理时间步长的情况下将相机移动到提供的资产计算出相机所在的位置,从而消除了卡顿并实现了平滑的运动。检查链接以获取完整信息
打开App,查看更多内容
随时随地看视频慕课网APP