Java 添加多个游戏对象LWJGL
我正在考虑使用LWJGL制作乒乓球 我当时正在做Bennybox的LWJGL教程,让它正常工作,然后当我的旧硬盘死机(R.I.p.)时,我又把它写了出来。我想做的是添加多个Java 添加多个游戏对象LWJGL,java,lwjgl,Java,Lwjgl,我正在考虑使用LWJGL制作乒乓球 我当时正在做Bennybox的LWJGL教程,让它正常工作,然后当我的旧硬盘死机(R.I.p.)时,我又把它写了出来。我想做的是添加多个游戏对象并让它们显示出来,我发现它们被添加到游戏对象列表中。以下是我的dropbox中的代码: 在这里穿有点太大了,但这里有一个主要部分: 这来自Game.java: private ArrayList<GameObject> objects; public Game() { object
游戏对象
并让它们显示出来,我发现它们被添加到游戏对象
列表中。以下是我的dropbox中的代码:
在这里穿有点太大了,但这里有一个主要部分:
这来自Game.java:
private ArrayList<GameObject> objects;
public Game() {
objects = new ArrayList<GameObject>();
GOplayer player = new GOplayer(0, Display.getDisplayMode().getHeight()/2);
GOball ball = new GOball(Display.getDisplayMode().getWidth()/2-GOball.SIZE-2, Display.getDisplayMode().getHeight()/2);
objects.add(player);
objects.add(ball);
}
私有ArrayList对象;
公共游戏(){
objects=newarraylist();
GOplayer=新的GOplayer(0,Display.getDisplayMode().getHeight()/2);
GOball ball=new GOball(Display.getDisplayMode().getWidth()/2-GOball.SIZE-2,Display.getDisplayMode().getHeight()/2);
对象。添加(玩家);
对象。添加(球);
}
出现问题的原因有两个
1:在GameObject
类中,浮动变量x
和y
是静态的。他们不应该这样
2:在您调用的Draw
类中glClear(GL\u COLOR\u BUFFER\u BIT | GL\u DEPTH\u BUFFER\u BIT)代码>这也不应该存在,因为这样做是清除深度和颜色缓冲区,这会导致每次使用您的Draw.rect
渲染一个“rect”,从而清除屏幕,因此最后只显示最后渲染的“rect”
此外,您实际上不需要清除GL\u DEPTH\u BUFFER\u位
,因为在initGL()
中,您可以使用glDisable(GL\u DEPTH\u TEST)禁用它代码>(尽管默认情况下禁用了GL\u DEPTH\u TEST
)。由于您只在二维空间中工作,因此没有实际深度,除非您使用GL_depth_TEST
对二维空间进行排序,同时仍然使用Z值
忠告
这里是我的一些建议,如果您不100%了解Java中的所有主要/基本关键字,或者不知道如何正确使用它们,那么从使用LWJGL创建OpenGL游戏开始,在某个时候对您来说将变得非常困难。我建议您从更简单的内容开始,或者从阅读或观看有关Java基础知识的多个教程开始
我之所以这么说,是因为您通过GOball
、GOplayer
和GObox
创建了类GameObject
的新实例,尽管在GameObject
中有浮动变量x
和y
这些变量是您设置为静态的,这意味着变量是共享的,并且总是相同的。因此,当您创建一个GOball
并设置x
和y
以设置x
和y
时,尽管当您创建GOplayer
并将其设置为x
和y
时,这也会影响GOball
,因此它们将始终具有相同的x
和y
,因为变量是共享的