如何加速无尽的跑步者

时间:2021-07-15 10:46:06

标签: c# unity3d scripting game-physics game-development

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

2 个答案:

答案 0 :(得分:1)

有两个普遍接受的加速游戏的答案:

  1. 使用可变的速度参数构建您的游戏逻辑,并将其包含在您的控制器和游戏逻辑脚本中。这种方法的好处是它允许您准确地控制您想要加速的和您不想加速的。缺点是您需要修改所有脚本才能使用 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 时遇到的一个常见问题是,由于时间尺度扭曲,他们的动画感觉不连贯。您可以将动画师的更新模式指定为Unscaled Time,以保持动画以恒定速度运行,无论时间尺度如何,以防止这种情况发生。

答案 1 :(得分:0)

看看 logarithmic 函数。

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

这会在远离极限时加快你的速度,一旦接近极限就会变慢。

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

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

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

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