不同机器下,游戏编程如何保证物体移动具有相同的速度

在游戏编程里,为了实现物体平滑的移动,我们会在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的输入,这样就可以实现在不同机器下物体移动具有相同的速度了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值