如何加速无尽的亚军

How to speed up endless runner

我已经使用过 Unity2D,但第一次在 Unity3D 中创建项目。我正在为我的投资组合制作无尽的跑步者并且不知道如何计算游戏的最佳速度。是否有一个速度公式或类似的东西来始终轻松地开始游戏,但越来越难,永远不会变得不可能。

查看 logarithmic 函数。

在此 calculator 上键入“y = 10log a”以查看值范围。

这会在远离限制时加快你的速度,然后在接近限制时减慢速度。

在“y = 10log a”的情况下

  • 如果 a = 1, y = 0
  • 如果 a = 10, y = 10
  • 如果 a = 100, y = 20
  • 等等。

所以它没有上限,但是你可以强行让它停在100或1000,而且它一开始很容易增加速度,但越快越慢加速

简而言之,“a”越高,“y”移动越慢。

关于加速游戏有 2 个普遍接受的答案:

  1. 使用变量 speed 参数构建您的游戏逻辑,并将其包含在您的控制器和游戏逻辑脚本中。这种方法的好处是它允许您准确控制要加速的内容和不想加速的内容。缺点是您需要修改所有脚本以使用 speedMultiplier:

     vector3 direction;
     float speed = 1.0f;
     Update() 
     {
         direction = //Set direction using inputs
     }
     FixedUpdate()
     {
         rigidbody.velocity = direction * speed
     } 
    
  2. 修改Time.timeScale。 Time.timeScale 是一个内置的 乘数 ,适用于所有依赖于 deltaTime 的东西。如果您设置 Time.timeScale = 2.0f,您的游戏将执行逻辑,就好像已经过去了两倍的时间一样。这包括动画、物理和任何其他基于时间的游戏逻辑)。如果您设置 Time.timeScale = 0.0f,您的游戏将暂停。如果你只是想加快一切,这将非常有用。

     time.timeScale = multiplier;
    

    人们 运行 在使用 time.timeScale 时遇到的一个常见问题是,由于扭曲的时间尺度,他们的动画感觉脱节。您可以将动画器的 更新模式 指定为 未缩放时间 以保持动画 运行ning 以恒定速度进行,而不管时间尺度如何以防止这种情况。