gpt4 book ai didi

java - 如何在 JavaFX 游戏中创建跟随玩家的 View ?

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:49 24 4
gpt4 key购买 nike

我正在尝试用 JavaFX 制作我的第一个游戏,其中玩家对象(不是节点)将在关卡内移动。然而,整个关卡在窗口内不应该可见,只有玩家周围的一部分应该可见。我已经搜索了很多适合我完成项目的方式的解决方案,但没有成功。以下代码描述了我如何设置 GUI:

private VBox appRoot;
private Pane gameRoot;
private Canvas canvas;
private GraphicsContext gc;
private HBox uiRoot;

这是我使用的不同 Pane 。 appRoot 按顺序包含 gameRoot 和 uiRoot。 gameRoot 包含 Canvas 。关卡内的所有内容(包括关卡本身)都绘制在 Canvas 上,如下所示:

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只是创建一个关卡并在不同 block 应该在的地方绘制正方形。玩家对象的 render 方法在其 x 和 y 坐标处绘制玩家。正如您所看到的,我已经缩放了 Canvas ,因此目前游戏启动时不会显示整个关卡。

问题是我无法让窗口中显示的是玩家对象周围的东西。我已经看到一些使用 setLayoutX 和 setLayoutY 方法的代码,但我无法重现它以使其工作。

如果有人能帮助我解决这个问题,我将非常感激,并且希望不要对绘图的完成方式进行太多改变。

谢谢! :)

另外,这里有两张图片展示了它的外观;第一个是当玩家不在当前 View 内时,第二个是当玩家在 View 中时。

Image without player in view

Image with player in view

最佳答案

不要直接使用Canvas来显示关卡。相反,您可以使用代表您级别的图像,然后将该图像放在 ImageView 中。 。在那ImageView您可以定义可见图像区域的视口(viewport)。

要获取图像,您可以使用 Canvas 节点并拍摄快照(请参阅此 question )。这可能是您现有的最简单的方法。或者您可以完全放弃 Canvas 并绘制图像。如果级别是预定义的(并且不是在运行时生成的),这似乎是最好的方法,然后您可以将图像作为资源与代码一起提供。

关于java - 如何在 JavaFX 游戏中创建跟随玩家的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36848957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com