请教吧友个gm里的速度问题。如果我的游戏是60帧,一个物体在
gamemaker吧
全部回复
仅看楼主
level 13
Venus🔥 楼主
请教吧友个gm里的速度问题。如果我的游戏是60帧,一个物体在60帧的情况下移动速度正常,如果突然掉到30帧,那么速度会降低一半,如果我还想30帧时速度正常,那么delta_time这个函数怎样用?本人代码小白,请求大佬讲的详细点[委屈]
2020年06月11日 16点06分 1
level 15
这边再复制一遍:
假设你想这个物体每1秒横向移动300像素,那么如果在step里写x+=300/60;即每帧走5像素,移速绑定帧率,当帧率降低移速自然变慢。如果写x+=(300/1000)*delta_time;即每毫秒走0.3像素,再乘上一帧经过的毫秒数,就是移速绑定现实时间,自然不会受帧率影响。
另外delta_time不是函数,是一个内置变量,表示上一帧经过的毫秒数。
2020年06月11日 22点06分 2
谢解答!另外,如果这个物体不是从step里控制运动的,而是从creat里控制运动的,这个函数还能生效吗?还有个问题,gms2里的fps与fps_real都是什么?按f1讲解的东西看不怎么明白[哈哈]
2020年06月12日 06点06分
@Venus🔥 gms自带的运动函数都是基于帧的,所以理论上,凡是调用一次物体就会一直运动的函数(或者说任意基于给speed赋值的方法),都不适用。
2020年06月12日 08点06分
@sunyubokkkkk 感觉比较有局限性,如果后面gms更新后把保时丢帧和丢时保帧能弄到可选项目上就更好了
2020年06月12日 09点06分
@Venus🔥 严格来说这两者并不是什么平行的选项,所以就目前来说这不可能会作为引擎的选项。因为游戏引擎内部的实现总是通过循环的,即一次一次地执行,即相当于所谓的帧。所以延时保帧是引擎内部实现的本质,而保时丢帧是解决这一本质所带来问题的一种方法:二者并不是平行的。
2020年06月12日 12点06分
level 15
game speed是你想让游戏一秒执行的帧数,fps是实际一秒钟执行的帧数,real_fps是实际这一秒钟最多能刷新的帧数。比如你设定game speed为60,那在游戏负载很低时,fps会达到你设的上限60,此时real_fps可能达到三四千;当游戏负载较高时,fps可能仍能达到要求的60,但real_fps可能已经跌倒一两百,但到此时玩家都不会觉得卡或者掉帧、变慢;当游戏负载特别高时,游戏出现掉帧,此时fps达不到60了,掉到50,那此时real_fps也是50。
2020年06月12日 08点06分 3
终于明白了,也就是说如果real_fps>60,游戏不会卡顿,如果real_fps<60或者fps<60,才会产生卡顿状况?
2020年06月12日 09点06分
@Venus🔥 一般来说是这样。一般情况下只需要关注fps就好了,小于你设定的60就是卡顿/变慢,大于等于就不会。real_fps可以额外指示你还剩余多少性能。
2020年06月12日 12点06分
1