Я пытаюсь построить простой платформер. Изначально у меня были все вражеские методы в основном классе, но я переместил их после того, как базовая игра заработала так, как я хотел. Однако, как только я начал использовать этот класс для хранения своих методов и переменных для врагов, моя игра стала намного медленнее, и FPS значительно упал. Вот мой код для основной игры l oop:
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();
}
}
}
А вот мой класс врага (прямоугольник - игрок в основном классе):
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;
}
}
Кто-нибудь есть идеи, почему это может происходить?