1 android
我刚刚发布了一个应用程序,避免尖峰!在Android市场上.我的一些朋友已经在他们的手机/平板电脑上下载了应用程序,我被告知它运行得太快了.它在我的android(HTC Dream)上运行得很好.有没有办法告诉它在某些机器人上运行的速度有多快,以及如何相应地调整它?我搜索过低和高,还没有找到答案.
我在Android Market上看过你的游戏并试过了.
您实际上无法确定在各种现有硬件上获得的最小和最大速度,如:
你应该做的是让你的游戏独立于帧率.为此,请避免每次更新位置时使对象移动固定距离.更喜欢让它们移动固定距离一段时间.
为此,请在每次更新对象位置时测量自上次更新以来经过的时间,并计算相应移动距离.
这样,根据硬件的质量,这些物体会很好地跳跃或移动,但至少它们会以相同的速度移动,这个速度将由你决定.当你在一台全新机器或旧机器上玩FPS游戏时,这有点相同:运动的速度是恒定的,只有帧速率不是.在旧机器上你会得到物体跳跃的印象,而在新机器上它们会优雅地移动,但它在两种情况下都有效(当然,对于旧机器来说,在某些限制内).一台机器永远不会太快.
为了给你一些伪代码,一个伞兵从屏幕的顶部落到底部:
这是要避免的循环:
while (playing) {
update_positions();
display();
}
update_positions() {
paratrooper.y -= 10; // the paratrooper's altitude decreases of 10 at each update
}
Run Code Online (Sandbox Code Playgroud)在慢速硬件上,跨屏幕需要数小时.在快速的硬件上,这将太快,你甚至不会看到伞兵下降.
这是正确的方法:
while (playing) {
update_positions();
display();
}
update_positions() {
time_elapsed = getSystemTimeInMS() - lastUpdateTimeInMS();
paratrooper.y -= 0.01 * time_elapsed; // the paratrooper's altitude decreases of 10 per second
setLastUpdateTimeMS(getSystemTimeInMS()); // This way it includes the calculation time
}
Run Code Online (Sandbox Code Playgroud)在较慢的硬件上,穿过整个屏幕可能需要15个显示器,而在快速硬件上则需要45个显示器,但在每种情况下,你的伞兵都会以每秒10dp的速度下降.
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |