创建敌方职业后,平台游戏速度降低

时间:2020-01-13 00:13:40

标签: java class game-development 2d-games

我正在尝试构建一个简单的平台游戏。我最初在主类中拥有所有敌对方法,但在我完成基本游戏后按我想要的方式移动了它们。但是,一旦我开始使用此类包含敌人的方法和变量,我的游戏就会变慢很多,FPS也会下降。 这是我的主要游戏循环代码:

public void run() {
        initialize();
        while (true) {
            move();

            ArrayList tempEnemies = getEnemies();
            for (int i = 0; i < tempEnemies.size(); i++) {
                enemy e = (enemy) tempEnemies.get(i);
                if (e.isVisible())
                    e.enemyUpdate();
                else 
                    tempEnemies.remove(i);
            }
            animation();
            animation(0);
            keepInBound();
            for (int i = 0; i < 3; i++)
                checkCollision(platforms[i]);

            ArrayList attacks = getAttacks();
            for (int i = 0; i < attacks.size(); i++) {
                Attacks p = (Attacks) attacks.get(i);
                if (p.isVisible() == true) {
                    p.update();
                    for (int j = 0; j < enemies.size(); j++)
                        checkCollisionAttacks(p, enemies.get(i));
                } else {
                    attacks.remove(i);
                }
            }

            //levelFinished();
            this.repaint();

            try {
                Thread.sleep(1000 / FPS);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

这是我的敌人阶级(rect是主要阶级的玩家):

public class enemy extends test{

    boolean enemyAlive = true, visible;
    int enemyHealth = 4, enemyMaxHealth = 4;
    int[][] spawnPositions = {{180, 420}, {130, 270}, {280, 120}, {500, 30}};
    private int x, y, speedX, height = 30, width = 30;

    public enemy() {
        int rand = (int)Math.random()*4;
        x = spawnPositions[rand][0];
        y = spawnPositions[rand][1];
    }

    public void enemyUpdate() {
        if (rect.x > x) {
            x+=speedX;
            enemyRight = true;
            enemyLeft = false;
        } else {
            x-=speedX;
            enemyRight = false;
            enemyLeft = true;
        }
    }

有人知道为什么会这样吗?

0 个答案:

没有答案