Je fais un projet de collège et j'ai des problèmes avec ma méthode de mise à jour EntiyManager. Ce système de mise à jour rend mes balles plus rapides en fonction de la taille de mon tableau d'entités. Si la taille de ce tableau est supérieure à 1, la balle se déplacera plus rapidement si la balle ne bouge pas normalement. Je souhaite que toutes mes balles se déplacent normalement.Méthode de mise à jour se comportant différemment en fonction de la taille du tableau d'entité.
Note: b.getVel() et vel sont toujours 2.
méthodes de EntityManager:
public void update()
{
if(!handler.getPaused())
{
for(int i = 0; i < creatures.size(); i++)
{
//entities[i] at
Creatures c = creatures.get(i);
c.update();
if(!bullets.isEmpty())
{
for (int j = 0; j < bullets.size(); j++)
{
Bullet b = bullets.get(j);
//Hit detection;
if(c.getCollisionBounds(b.getVel(), 0).intersects(b.getCollisionBounds(0, 0)))
{
c.HP -= 5;
removeBullet(b);
}
System.out.println(b.getVel());
b.update();
}
}
else System.out.println("empty");
}
}
}
public void draw(Graphics g)
{
for(Entity se : staticEntities)
{
se.draw(g);
}
for(Bullet b : bullets)
{
b.draw(g);
}
for(Creatures c : creatures)
{
c.draw(g);
}
}
méthodes Bullet:
@Override
public void update()
{
if(vel > 0)
{
txRight = (int) (x + vel + bounds.x + bounds.width)/Tile.TILESIZE;
}
else
{
txLeft = (int) (x + vel + bounds.x)/Tile.TILESIZE;
}
if(collisionWithTile(txRight, (int) (y + bounds.y)/Tile.TILESIZE) ||
collisionWithTile(txRight, (int) (y + bounds.y + bounds.height)/Tile.TILESIZE) ||
collisionWithTile(txLeft, (int) (y + bounds.y)/Tile.TILESIZE) ||
collisionWithTile(txLeft, (int) (y + bounds.y + bounds.height)/Tile.TILESIZE))
{
handler.getLevel().getEntityManager().removeBullet(this);
}
x += vel;
}
@Override
public void draw(Graphics g)
{
g.setColor(Color.yellow);
g.fillRect((int) x, (int) y, width, height);
}