- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试移动一个对象,使其在视觉上以相同的速度移动,而不管帧速率如何波动。根据我的理解,我应该使用 Time.deltaTime
来确定在每次 Update
迭代期间移动多远。我的更新
代码是这样的:
void Update()
{
this.rigidBody.MovePosition(this.transform.position + new Vector3(Time.deltaTime * 2f, 0, 0));
}
然而,当对象在屏幕上移动时,它会以更快和更慢的速度运动。如果我在每次 Update
期间将它移动一个恒定的量(如下所示),它似乎会均匀移动。
void Update()
{
this.rigidBody.MovePosition(this.transform.position + new Vector3(0.02f, 0, 0));
}
我很困惑,因为我认为在每次 Update
期间将对象移动恒定距离应该是导致抖动的原因,因为它的速度会受到帧速率的影响。而且我认为使用 Time.deltaTime
应该会导致与帧速率无关的恒定运动速率。
我的 Time.deltaTime
值在 0.002 到 0.17 之间变化,我也不明白,因为我有一个只有 2D Sprite 的非常简单的场景,所以我不明白为什么差异如此之大太好了。
最佳答案
如果您想计算您的RigidBody
的准确新位置,您应该直接设置 position
。例如:
this.rigidBody.position += new Vector3(Time.deltaTime * 2f, 0, 0);
或者,执行您已有的代码,但在 FixedUpdate()
方法中。
MovePosition()
旨在用于 FixedUpdate()
方法的上下文中。 Unity3d 将尝试根据将在当前位置和新位置之间插入位置的帧速率来计算移动速率。当您调用 MovePosition()
时,您还进行了插值并使用了结果,从而混淆了它。
关于c# - 困惑为什么 Time.deltaTime 导致运动不均匀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44915415/
我的 deltaTIme 遇到了麻烦,基本上我想做的就是每秒向变量添加 1。 private int num=0 private float deltaTime=Gdx.graphics.getDel
我试图将一个简单的矩形从当前位置移动到 Canvas 上单击的位置。当我提供恒定速度时,矩形就会出现并且移动得很好。但是当我将其乘以增量时间时,矩形不再出现。我使用 requestAnimationF
我想创建一个基于速度移动的 2d 游戏。正如目前的代码一样,我正在使用增量时间来使帧速率之间的速度变化保持一致。然而,在跳跃时,在 144hz 显示器上运行时,每次跳跃的跳跃高度略有不同(最多约
我是 Unity 的新手,我多次看到需要添加 Time.deltaTime。什么情况下应该加?我知道这是为了在框架计算机快速刷新时不会有多余的电量。 例如,在下一种情况下,我是否需要添加Time.de
我正在尝试使用“阻尼”属性逐渐降低物体的速度。之后,我想使用速度移动对象的位置。它看起来像这样: velocity.x *= velocity.damping; velocity.y *= veloc
我正在构建一个 HTML5 Canvas 游戏,它使用 requestAnimationFrame 来渲染 Canvas 中的每一帧。要以基于秒而不是帧速率的速率移动动画,我正在构建一个类似于 Uni
我正在尝试移动一个对象,使其在视觉上以相同的速度移动,而不管帧速率如何波动。根据我的理解,我应该使用 Time.deltaTime 来确定在每次 Update 迭代期间移动多远。我的更新代码是这样的:
在我的游戏中,我想每隔几秒调用一个函数,从数组中创建随机对象。目前我正在像这样通过 SKAction 移动这些对象: func createRandmoObject() { let rando
关于何时应该或不应该将数量乘以 Time.deltaTime ,似乎有很多令人困惑/矛盾的建议。所以我想知道, 与 Unity 物理系统有关,你应该什么时候乘以 Time.deltaTime ? 我知
我正在尝试创建一个 LSTM 来对数据序列进行分类。 我将使用的每个训练输入的数据结构是: [[ [deltaX,deltaY,deltaTime], [deltaX,deltaY,deltaTime
我想知道使用我的程序的 deltaTime 是否是个好主意(程序运行的当前时间与自游戏循环的最后一次迭代以来程序运行的时间之间的变化(以毫秒为单位) ) 来控制敌人的健康损失。 所以不要这样做: ..
之前在我的游戏主循环中,时间被管理在 60 FPS 和相应的 Delay 时间延迟。 Sprite 序列动画如下: if(++ciclos > 10){ siguienteSprite++;
所以我是虚幻引擎 4 的新手,我认为发布在他们网站上的文档是一个很好的起点。但是,我在编码部分的一些事情上苦苦挣扎(我有相当不错的 C++ 知识)。这是我遇到问题的代码摘录: void AFloati
TL,DR:在协程中使用 Time.deltaTime 作为 yield 的等待时间是否安全? 通常为了避免 Update() 内部不必要的逻辑以实现短暂的功能,我会改为运行协程。例如,在我的游戏中,
我正在尝试实现一种在游戏中创建计时器的方法。这是我当前的代码;我如何创建一个简单的计时器来检查 1 秒是否已经过去? public class Time { private static lo
我找到了一个函数来获取自 Mac 启动以来的毫秒数: U32 Platform::getRealMilliseconds() { // Duration is a S32 value. /
我程序的 fps 不正确。当我使用 RivaTuner 统计数据计算我的应用程序的 fps 时,它给出了例如 3000 fps。但是我的程序计算出一个完全不同的数字,比如 500。它一直在上下波动,而
我正在尝试计算 deltaTime 中经过的秒数,但我不确定该怎么做,因为我的 deltaTime 不断打印 0.0166 或 0.0167。 这是我的代码: override func update
下面是我想强调的差异的一个简单示例。 使用协程: public float repeatRate = 5f; void Start() { StartCoroutine("RepeatSome
所以我有这个小程序,我的播放器可以来回弹跳。他向左移动看起来像这样: if ((runright == false) && (birdyDead == false)) { float cur
我是一名优秀的程序员,十分优秀!