0

我正在用 Java Swing 制作一个简单的平台游戏。当然,我希望某些平台对于 1 个屏幕来说太大,我有以下问题:当玩家控制的角色接近屏幕边缘时,让背景移动的最佳方法是什么?实际上不仅仅是背景,而是整个游戏内容(对手、砖块等)?当然,除了上传新图像并在角色移动 1 个像素时重新绘制所有内容之外,肯定有更好的方法。我希望我以一种可以理解的方式措辞,我试图在这个网站和其他网站上查找它,但到目前为止没有运气。提前谢谢。

4

2 回答 2

1

这种类型的平台游戏称为横向卷轴

基本上,您创建的图像比您的 JPanel 更宽或更高。您使用 Java 图像处理来裁剪图像并将其显示在 JPanel 中。

一个单位时间后,您裁剪图像的不同部分并将其显示在 JPanel 中。这种情况发生得如此之快,以至于图像似乎正在滚动。

您必须为游戏中的玩家、积木和任何其他对象建模。您必须在绘制背景后绘制这些对象。

查看Killer Game Programming in Java的第 12 章。你可能需要先阅读前面的章节,所以第 12 章才有意义。如果你想做很多 Java 游戏开发,买这本书。

于 2013-08-01T16:11:42.213 回答
1

我认为上面的答案是一种有效的方法,但如果你想要另一个。您可以将 Graphics 对象转换为 Graphics2D 对象,然后您可以从原点转换一段距离。当您这样做时,您从 Graphics 对象绘制的所有内容都将被翻译

@Override
public void paint(Graphics g){
   super.paint(g);

   Graphics2D g2d = (Graphics2D)g;
   g2d.translate(character.x,character.y);

   background.render(g);
   character.render(g);
}

尽管这确实需要重新绘制可能不一定移动的对象。在处理大型地图时,它可能会成为一个问题。但我总是尝试只渲染屏幕上的对象和一些可能部分在屏幕上的对象。youtube 上有一个展示如何做到这一点的教程

教程

于 2014-07-20T22:03:01.767 回答