我正在编写一个平台游戏,我决定以一种不寻常的方式布局图块。我没有让每个图块成为自己的对象,而是让一个对象代表每种类型的块,我只是将该块多次放入我的图块映射数组中。现在的问题是,当我在块上调用我的图块更新方法时,它会在地图上的所有块上调用更新方法。所以现在我所做的是我将更新方法传递给了瓷砖的坐标。所以这就是问题所在,更新方法每秒被调用几次,但我只希望我的块更新操作每 3 秒发生一次,我将如何实现这一点。我找到了一个临时解决方案,但是通过使用随机数来确定是否应该执行更新操作,效果不佳。这是我目前的更新方法。我不能让每个块都有自己的实例,
Random random = new Random();
public void update(int x, int y, boolean inRange)
{
if(random.nextInt(1000)==0)
{
double playerX = (panel.getCharacter().getX()+panel.getCharacter().getX()+panel.getCharacter().getWidth())/2;
double playerY = (panel.getCharacter().getY()+panel.getCharacter().getY()+panel.getCharacter().getHeight())/2;
int dispenserX = x*Block.WIDTH;
int dispenserY = y*Block.HEIGHT;
Point2D.Double player = new Point2D.Double(playerX, playerY);
Point2D.Double dispenser = new Point2D.Double(dispenserX, dispenserY);
double angle = calcAngle(dispenser, player);
panel.addEntity(new EntityFireball(x*Block.WIDTH,y*Block.HEIGHT,angle,1));
Music.playWav("dispenser");
}
}