我在java中使用libgdx库编写赛车游戏。这是2D游戏,摄像机随车移动(汽车始终位于屏幕的中央)。我用的是正交相机。我想在屏幕的左上角始终显示一些文字。问题是屏幕左边缘之间的宽度,当汽车移动得更快时文本正在改变。我想相机会有一些延迟移动到新位置。
这是我的代码:
创建相机:
_camera = new OrthographicCamera();
float widthUnit = _cameraWidth;
float heightUnit = widthUnit * (float)_screenHeight / (float)_screenWidth;
_camera.setToOrtho(false, widthUnit, heightUnit);
每帧设置相机位置:
_batch.setProjectionMatrix(_camera.combined);
_camera.position.set(_visibleRider.getPosition().x, _visibleRider.getPosition().y, 0);
_camera.update();
每一帧都画出文字:
float leftPos = _camera.position.x - _camera.viewportWidth / 2f + 5f;
当我的骑手慢慢行驶时,左边缘与文字之间的距离为5个单位。当我的骑手快速向右侧行驶时,宽度会更大。当驾驶员快速向左侧行驶时宽度较小。我想在屏幕左侧始终显示5个单位,无论相机移动速度有多快。我怎样才能做到这一点?我做错了什么?
答案 0 :(得分:0)
您始终可以为HUD(文本或其他UI元素)使用单独的阶段。无论相机位置如何,都应该相对于屏幕。
它会简化内容,因为您不需要跟上摄像机位置并每次都计算文本位置。
希望这有帮助。