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