可以,你问的非常好。我要稍微扯远一点。
传统以C++,ActionScript编游戏的过程中,偶尔有些课本会漏掉gameloop的设计。在gameloop的设计中有一个很重要的值,叫做delta-time(dt)。dt意指每次运行回圈所用掉的时间。由於每次运行回圈,屏幕就会刷新一次,所以基本上当运行稳定的时候,dt就是fps(frame per second)的倒数。没留意到dt的重要性,会设计出以下这种程式:
为了交作业,小明设计了一个游戏主角,按住D键时让主角向右移动。於是他设计了一个无线回圈,让回圈每跑一次,主角的x座标就+1。他在自己的电脑上跑得很好,结果把程式交给老师后,在老师的电脑上主角移动的速度奇快无比,简直用飞的。於是他这次作业得了0分。
为什麼?很简单,因为.......老师的电脑CPU比较快~
![[酷]](/static/emoticons/u9177.png)
所以在实际制作游戏时,不能进全速地去赶著跑gameloop回圈,当发现gameloop过快时,就要有个机制让他慢下来。这个机制就是dt:不管你电脑多快,你就是跑到0.000000001秒跑完这一圈,你也要等到额定的dt过完才准跑下一圈。这麼做才能确保老师的电脑可放慢脚步,让效能降到与小明电脑相同。