我正在Java Swing中制作一个简单的平台游戏。当然我想要一些平台对于1个屏幕而言太大而且我有以下问题:当玩家控制的角色接近屏幕边缘时,什么是使背景移动的最佳方法?事实上不仅仅是背景而是整个游戏内容(对手,砖块等)?当然,必须有一个更好的方法,只需上传一个新的图像,并在角色移动1个像素时重新绘制所有内容。我希望我以一种可以理解的方式措辞,我试图在这个网站和其他人看到它,但到目前为止没有运气。 Thx提前。
答案 0 :(得分:1)
这种类型的平台游戏称为side scroller。
基本上,您创建的图像比JPanel更宽或更高。您使用Java图像处理来裁剪图像的一部分并将其显示在JPanel中。
经过一段时间后,您将裁剪不同的图像并将其显示在JPanel中。这种情况发生得太快,以至于图像显示为滚动。
您必须为游戏中的游戏玩家,砖块和任何其他物体建模。绘制背景后必须绘制这些对象。
查看Killer Game Programming in Java的第12章。您可能需要先阅读前面的章节,因此第12章是有道理的。如果您想进行大量的Java游戏开发,请购买本书。
答案 1 :(得分: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上