如何加速无尽的跑步者

Posted

技术标签:

【中文标题】如何加速无尽的跑步者【英文标题】:How to speed up endless runner 【发布时间】:2021-09-24 06:39:47 【问题描述】:

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

【问题讨论】:

在 Unity 中,您通常在方法 FixedUpdate() 中管理速度和运动,使用 Time.deltaTime 这是自上一帧以来经过的时间。没有什么能阻止您使用变量来提高/降低速度:GameSpeed * Time.deltaTime Time.deltaTime 应在Update() 中使用。 Time.fixedDeltaTime应该用在FixedUpdate() 知道了!谢谢你们! 【参考方案1】:

有 2 个普遍接受的加快游戏速度的答案:

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

     vector3 direction;
     float speed = 1.0f;
     Update() 
     
         direction = //Set direction using inputs
     
     FixedUpdate()
     
         rigidbody.velocity = direction * speed
      
    

    修改 Time.timeScale。 Time.timeScale 是一个内置的乘数,适用于依赖 deltaTime 的所有内容。如果您设置 Time.timeScale = 2.0f,您的游戏将执行逻辑,就好像经过了两倍的时间。这包括动画、物理和任何其他基于时间的游戏逻辑)。如果您设置 Time.timeScale = 0.0f,您的游戏将暂停。如果您只想加快一切速度,这非常有用。

     time.timeScale = multiplier;
    

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

【讨论】:

【参考方案2】:

查看logarithmic 函数。

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

这将使您在远离极限时更快地提高速度,然后在接近极限时减慢速度。

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

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

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

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

【讨论】:

谢谢,这是个好主意!:) 我完全忘记了这个问题,抱歉没有按时看到这个答案:)

以上是关于如何加速无尽的跑步者的主要内容,如果未能解决你的问题,请参考以下文章

《加速世界03暮色掠_者》epub下载在线阅读,求百度网盘云资源

加速度计传感器数据挖掘方法

合集- 行业解决方案如何搭建高性能的数据加速与数据编排平台

技术的飞速进步,加速8K电视的普及,谁将成为行业领军者?

为无尽的跑步游戏创建动态大小的 SKSpriteNode 平台

聚生态之力,英特尔加速未来网络转型