首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Time.deltaTime在统一中的主要功能是什么?

Time.deltaTime在统一中的主要功能是什么?
EN

Stack Overflow用户
提问于 2019-11-19 13:47:13
回答 3查看 5.8K关注 0票数 3

我在联合学习游戏开发。最近,在我从教程中学习的代码中,我获得了Time.deltaTime函数的结构。我已经搜索了它,以更好的理解,但没有了解使用它的主要目的,因为它是以专业的方式解释。总之,我想要一些简单的解释。所以,我可以从它理解。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-19 13:57:05

呈现和脚本执行需要时间。每一帧都不一样。如果您想要60 fps,您将不会有稳定的fps -但不同的时间通过每一帧。如果速度太快,您可以等待,但当速度比预期慢时,不能跳过呈现。

要处理不同的帧长度,您将得到"Time.deltaTime“。在Update中,它会告诉您完成最后一帧的时间已经过了多少秒(通常是0.00132的分数)。

如果您现在使用以下代码将一个对象从A移动到B:

代码语言:javascript
运行
复制
object.transform.position += Vector3.forward * 0.05f;

它将移动每帧0.05单位。经过100帧,它已经移动了5个单位。

一些个人电脑可能以60 pcs运行这个游戏,另一些则以144 hz运行。此外,框架不是固定不变的。

所以你的物体要花1到5秒才能移动这个距离。

但如果你这么做

代码语言:javascript
运行
复制
object.transform.position += Vector3.forward * 5f * Time.deltaTime;

它将在1秒内移动5个单位。独立于替罪羊。因为如果你有10000 fps,那么deltaTime会非常小,所以它只移动一个非常小的帧。

注意:在FixedUpdate()中,技术上并不是100%相同的每一个帧,但你应该表现得好像总是0.02f或任何你设定的物理间隔。因此,独立于框架结构的Time.deltaTime在FixedUpdate()中将返回fixedDeltaTime

编辑:这是我制作的一个很好的比较视频:

请看这段视频

红色立方体:transform.position += Vector3.right * (1f / 60f);

绿色立方体:transform.position += Vector3.right * Time.deltaTime;

框架被锁定到60 fps!(使用Application.targetFrameRate = 60;

你可以看到,绿色立方体总是在5,10,15,20,25处击中右边的墙.起初,它们看起来是同步的,但是一旦我摇了一下窗口,一些帧就会被丢弃(可能是编辑器的事情,但是在一个真正的游戏中,有很多原因造成帧丢失)。红色的立方体永远赶不上绿色的立方体,掉落的框永远不会重复。

这表明使用deltaTime是更一致的+它给您一个很好的奖励:您可以调整时间刻度使用Time.timeScale = .5f;来做一个慢动作!

票数 5
EN

Stack Overflow用户

发布于 2019-11-19 14:00:22

Time.deltaTime只是最后一帧和当前帧之间的秒间隔时间。因为每个帧都会调用一次更新,所以可以使用Time.deltaTime以恒定的速率进行操作,而不管框架(可能会有很大的波动)。

因此,如果我们只是在我们的更新函数中说obj.transform.position += new Vector3(offset, 0, 0);,那么obj就会在x方向上移动offset单元,而不考虑FPS。

然而,如果我们说obj.transform.position += new Vector3(offset * Time.deltaTime, 0, 0);,那么我们知道obj每秒钟都会移动offset单位,就像每帧一样,它将移动offset的分数,对应于该帧所用的时间。

票数 4
EN

Stack Overflow用户

发布于 2019-11-19 13:55:03

就像这里说的

此属性提供当前和前一个帧之间的时间。

例如,您可以使用它来检查框架。同样,正如这里所说

如果您想以恒定的速度移动某物,例如,用Time.deltaTime乘以速度,那么您将得到自上次更新以来对象移动的距离(请记住:距离=速度*时间)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58935536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档