为了账号安全,请及时绑定邮箱和手机立即绑定

车辆抽动.

车辆抽动.

C#
慕桂英3389331 2022-11-21 21:29:36
所以我编辑了我的问题,因为我忘记给你看一个相机脚本。也许问题就在那里。我只是相信,即使在编辑旧问题之后,也绝对不会有人阅读编辑后的文章。所以我创建了一个新问题。所以我有这样的问题。我试着让电车动起来。为此,我从 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 codetransform.rotation = pathCreator.path.GetRotationAtDistance(distanceTravelled);transform.position = pathCreator.path.GetPointAtDistance(distanceTravelled); // I guess the problem is somewhere there所以有 Asset Store 脚本中的GetRotationAtDistance方法GetPointAtDistance:
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我曾经遇到过类似的问题,这个链接帮助了我很多。

您遇到的问题是由于 The camera being 3rd person and not parented to the object it is following.

问题是目标对象在移动时会在相机之前移动,从而导致卡顿,因为相机紧跟在对象之后移动。尝试将相机脚本放入LateUpdate,但如果这不起作用,那么我建议检查上面链接的链接。

该链接讨论了插值,它在不增加您的物理时间步长的情况下将相机移动到提供的资产计算出相机所在的位置,从而消除了卡顿并实现了平滑的运动。检查链接以获取完整信息


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信