Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不知道如何画;“毒镖”;_Java - Fatal编程技术网

Java 不知道如何画;“毒镖”;

Java 不知道如何画;“毒镖”;,java,Java,抱歉,如果标题有点。。。模糊的不管怎样,我正在用java制作一个platformer,并且我一直在尝试创建一个压力板触发的分配器,它可以射出有毒的飞镖。游戏几乎被分成一个网格系统,每个区块都是网格上的一个点。到目前为止,我已经这样做,当压盘被激活时,它看起来好像被按下了。我也能把它画到屏幕上,但它不动,什么也不动。这是我用来将其绘制到屏幕上的代码: public void drawDart(Graphics g) { if(Component.isPressed) { f

抱歉,如果标题有点。。。模糊的不管怎样,我正在用java制作一个platformer,并且我一直在尝试创建一个压力板触发的分配器,它可以射出有毒的飞镖。游戏几乎被分成一个网格系统,每个区块都是网格上的一个点。到目前为止,我已经这样做,当压盘被激活时,它看起来好像被按下了。我也能把它画到屏幕上,但它不动,什么也不动。这是我用来将其绘制到屏幕上的代码:

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();
  }
}