我正在尝试在JavaFX中制作我的第一个游戏,其中玩家对象(不是节点)将在一个级别内移动。但是,窗口内不应显示完整级别,只有播放器周围的一部分应该是。我已经搜索了相当多的解决方案,这与我完成项目的方式一致,但没有成功。以下代码描述了我如何设置GUI:
private VBox appRoot;
private Pane gameRoot;
private Canvas canvas;
private GraphicsContext gc;
private HBox uiRoot;
这是我使用的不同窗格。 appRoot按顺序包含gameRoot和uiRoot。 gameRoot包含画布。关卡中的所有内容(包括关卡本身)都会绘制到画布上,如下所示:
canvas = new Canvas(ROOM_WIDTH, ROOM_HEIGHT);
gc = canvas.getGraphicsContext2D();
createLevel(ROOM_WIDTH, ROOM_HEIGHT, CELL_WIDTH, CELL_HEIGHT);
gc.scale(2, 2);
drawLevel(gc, ROOM_WIDTH, ROOM_HEIGHT, CELL_WIDTH, CELL_HEIGHT);
player.render(gc);
createLevel和drawLevel只是创建一个级别并绘制不同块应该是的方块。玩家对象的渲染方法在其x坐标和y坐标处绘制玩家。正如你所看到的,我已经缩放了画布,所以到目前为止,游戏开始时并没有显示整个关卡。
问题是我无法做到这一点,窗口中显示的是播放器对象周围的事物。我见过一些使用方法setLayoutX和setLayoutY的代码,但我一直无法重现它以便它可以工作。
如果有人能帮我解决这个问题,我将非常感激,希望不要过多地改变绘图方式。
谢谢! :)
此外,这里有两张图片展示了它的外观;第一个是当玩家不在当前视图中时,第二个是视图中的玩家。