如何让SFML项目中速度随屏幕分辨率缩放,使炮弹同时间清屏?
窗口缩放时保持炮弹移屏时间一致的SFML实现
我有一个可调整大小的窗口,还有一门能发射炮弹的大炮,炮弹速度由帧率和流逝时间决定,基于SFML的实现代码如下:
if (Keyboard::isKeyPressed(Keyboard::Space) && !shoot) { shoot = true; } // 计算炮弹弧度 bombRadians = ((2.f * PI / 360.f) * bomb.getRotation()); x = bombSpeed * sin(bombRadians); y = bombSpeed * -cos(bombRadians); if (shoot) { bomb.move(x, y); } // 计时器 frames++; if (frames == 6) { timer += 0.1f * (60 / framerate); frames = 0; } cout << timer << '\n'; // 更新速度 playerSpeed = (timer / 90.f + 1.f) * (60.f / framerate); bombSpeed = ((timer / 25.f + 2.f) / 2.f + 6.f) * (60.f / framerate);
我希望在调整窗口大小时,速度能随分辨率缩放,保证不管分辨率是多少,炮弹都能在相同时间内移出屏幕。以下是简化后的计算代码:
// 简化后的计算逻辑 timer += 6.f / framerate; bombSpeed = ((6.f * timer) + 2100.f) / (5.f * framerate); planeSpeed = ((6.f * timer) + 300.f) / (5.f * framerate);
内容的提问来源于stack exchange,提问作者Christian B.
相关产品推荐
相关产品推荐

