zoukankan      html  css  js  c++  java
  • 不同机器下,游戏编程如何保证物体移动具有相同的速度

    在游戏编程里,为了实现物体平滑的移动,我们会在Tick里使用位移函数,使得物体在空间中得以移动,例如:UE4中的AddActorLocalOffset函数等,但是,这会有一个问题,每台机器的性能不同,造成了相同的代码在不同的机器上运行完一个Tick的时间也就不同,此时,不同机器间的FPS就会不同,那么造成的后果就是不同机器下,物体位移的速度就不同,如何解决这个问题呢?

    其实这个问题可以用数学的方法进行解决,问题用形式化语言表达则是,在不同的δt(每一个Tick的运行时间)下,在相同的时间t内,要让不同机器下的物体位移X相同,即位移的平均速度v相同。可以列出(1)式,其中的δx是我们可以在Tick中设置的每一帧进行的位移:

    1)

    通过进一步分析我们可以知道,t/δt 是 时间t内运行的帧数,这是我们不能控制的量,我们需要想办法根据不同机器下来调整δx使得等式恒成立,直观来说,运行速度快的机器,每秒帧数高,那么每个帧分到的位移就要小。而我们知道,而δx=v*δt ,其中v就是位移的平均速度,v在等式两边都是相等的。则(1)式可变为(2)式:

    (2)

    那么,到这个地方我们就可以看到了解决问题的办法,我们把不同机器下的δt 与固定的 v 相乘的结果作为 δx的输入,这样就可以实现在不同机器下物体移动具有相同的速度了。

  • 相关阅读:
    PHP学习笔记(二)
    PHP开发笔记(一)
    PHP NOTE
    python windows进制文件可以直接下载使用
    深入浅出Hyper-V网络虚拟化技术
    深入浅出Hyper-V网络虚拟化(序)
    Windows Server 笔记(七):Windows Server 2012 R2 NIC Teaming(NIC组)
    Hyper-v Server 2012 R2增强会话模式
    Hyper-V动态迁移中?小心性能损失
    CLOUDSTACK FOR HYPER-V
  • 原文地址:https://www.cnblogs.com/Leonhard-/p/6511807.html
Copyright © 2011-2022 走看看