我正在写一个平台游戏,我决定以不寻常的方式布置瓷砖。我没有将每个图块作为自己的对象,而是创建了一个表示每种类型块的对象,而我只是将该块放入我的图块地图数组中多次。问题是,当我在块上调用我的tile更新方法时,它会调用地图上所有块上的update方法。所以现在我做的是我通过更新方法的瓷砖的坐标。所以这就是问题,更新方法每秒被调用几次,但我只想让我的块更新动作每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");
}
}