【发布时间】:2016-03-16 03:32:10
【问题描述】:
我刚刚使用 libgdx 开始了一个小项目,我注意到相机有点落后于鼠标。我是这样移动的:(我已经删掉了其他所有内容)
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
screenXlast = screenX;
screenYlast = screenY;
if (button == Input.Buttons.RIGHT || pointer > 0) {
rightMouseKlicked = true;
return true;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
if (button == Input.Buttons.RIGHT) {
rightMouseKlicked = false;
}
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
if (rightMouseKlicked) {
gamecam.translate((screenXlast - screenX) * gamecam.zoom, (screenY -
screenYlast) * gamecam.zoom);
}
screenXlast = screenX;
screenYlast = screenY;
return false;
}
游戏以 60fps 的速度运行,但输出似乎延迟了几帧。 (移动时鼠标光标不会停留在地图上的同一位置)
有没有其他方法可以让相机与鼠标保持一致?
【问题讨论】:
-
gamecam.translate((screenXlast - screenX) * gamecam.zoom, (screenY - screenYlast) * gamecam.zoom) 缺少根据实际 fps 更正转换的增量值。尽管您的问题可能还有其他原因,但您应该始终将 delta 应用于您的转换。
-
请出示您的
resize方法。 -
resize 方法是什么意思?
-
您的游戏或屏幕类中的那个。试图找出屏幕尺寸和相机尺寸之间的关系。
-
我想你误解了我的问题。地图正在移动到正确的位置,但它在鼠标后面大约 50 毫秒。这是截图:directupload.net/file/d/4295/i8utxi4u_png.htm