Java 不知道如何画;“毒镖”;
抱歉,如果标题有点。。。模糊的不管怎样,我正在用java制作一个platformer,并且我一直在尝试创建一个压力板触发的分配器,它可以射出有毒的飞镖。游戏几乎被分成一个网格系统,每个区块都是网格上的一个点。到目前为止,我已经这样做,当压盘被激活时,它看起来好像被按下了。我也能把它画到屏幕上,但它不动,什么也不动。这是我用来将其绘制到屏幕上的代码:Java 不知道如何画;“毒镖”;,java,Java,抱歉,如果标题有点。。。模糊的不管怎样,我正在用java制作一个platformer,并且我一直在尝试创建一个压力板触发的分配器,它可以射出有毒的飞镖。游戏几乎被分成一个网格系统,每个区块都是网格上的一个点。到目前为止,我已经这样做,当压盘被激活时,它看起来好像被按下了。我也能把它画到屏幕上,但它不动,什么也不动。这是我用来将其绘制到屏幕上的代码: public void drawDart(Graphics g) { if(Component.isPressed) { f
public void drawDart(Graphics g) {
if(Component.isPressed) {
for(int x = 0; x < block[0].length; x++) {
for (int y=0; y < block[0].length; y++) {
if(x == 91 && y == 35) {
block[x][y] = new Block(new Rectangle(x * Tile.tileSize, y * Tile.tileSize, Tile.tileSize, Tile.tileSize), Tile.poisonDart);
}
}
}
}
}
您是否为您的游戏实现了“游戏循环”?它看起来像这样(伪代码):
每个dart对象都应该知道它在游戏世界中的位置,dart类的update()方法应该更新它的位置,包括在发射时水平移动它,并使它由于重力而下落。跟踪它的水平和垂直速度是一个好主意,除非你使用一个单独的物理引擎,听起来你不是。然后draw()方法只需要在屏幕上正确的位置绘制它。这里没有足够的上下文来理解这个问题。请阅读和,以获取如何编写好的SO问题的提示。在您向我们展示的代码中,您似乎没有实际绘制任何东西?要设置动画,您需要在每个重画(帧)的不同位置绘制一些东西,而不仅仅是在重画方法块[x][y]=新块(新矩形(x*Tile.tileSize,y*Tile.tileSize,Tile.tileSize,Tile.tileSize),Tile.Dart)内循环绘制东西;这是画省道的代码行,很抱歉,我忘记解释了我不确定如何让它改变位置,但这是个问题,因为简单地减少或增加“x”似乎不起作用。你在重新绘制画布吗?你可以增加所有你想要的坐标,但是除非你在画图,否则什么都不会发生。我该如何重新画我的画布?哦,好的!非常感谢。编辑:实际上,你说的“gameWorldEntities中的GameEntity e”是什么意思?
block[x][y] = new Block(new Rectangle(x * Tile.tileSize, y * Tile.tileSize,
Tile.tileSize, Tile.tileSize), Tile.poisonDart);
while (gameRunning) {
for (GameEntity e in gameWorldEntities) {
e.update(timePassed);
}
for (GameEntity e in gameWorldEntities) {
e.draw();
}
}