I'm currently trying to create an explosion animation for both spaceship and monsters at contact. My first problem is that the Greenfoot.delay freezes the wholle game itself, which is unsatisfying, and the second problem is that a monster that is farther away rolls the animation. Here is my code for the spaceship:
if(!getObjectsInRange(100,monsters.class).isEmpty())
{
monsters monsters = (monsters) getWorld().getObjects(monsters.class).get(0);
monsters.setImage("explosion1 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion2 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion3 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion4 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion5 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion6 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion7 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion8 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion9 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion10 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion11 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion12 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion13 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion14 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion15 img.png");
Greenfoot.delay(1);
monsters.setImage("explosion16 img.png");
Greenfoot.delay(1);
removeTouching(monsters.class);
setImage("explosion1 img.png");
Greenfoot.delay(1);
setImage("explosion2 img.png");
Greenfoot.delay(1);
setImage("explosion3 img.png");
Greenfoot.delay(1);
setImage("explosion4 img.png");
Greenfoot.delay(1);
setImage("explosion5 img.png");
Greenfoot.delay(1);
setImage("explosion6 img.png");
Greenfoot.delay(1);
setImage("explosion7 img.png");
Greenfoot.delay(1);
setImage("explosion8 img.png");
Greenfoot.delay(1);
setImage("explosion9 img.png");
Greenfoot.delay(1);
setImage("explosion10 img.png");
Greenfoot.delay(1);
setImage("explosion11 img.png");
Greenfoot.delay(1);
setImage("explosion12 img.png");
Greenfoot.delay(1);
setImage("explosion13 img.png");
Greenfoot.delay(1);
setImage("explosion14 img.png");
Greenfoot.delay(1);
setImage("explosion15 img.png");
Greenfoot.delay(1);
setImage("explosion16 img.png");
Greenfoot.delay(1);
getWorld().removeObject(this);
}
else
{
if(Greenfoot.mouseMoved(null) || Greenfoot.mouseDragged (null))
{
MouseInfo mouse =Greenfoot.getMouseInfo();
setLocation(mouse.getX(), mouse.getY());
}
}
