You probably have the 'mousePressed' and 'mouseClicked' lines within an 'if' block (not including its own). These statements should be executed directly by the act method before even working with the shootDelay field.
public class Player extends Actor
{
private int speed = 2;
public static int health = 100;
public static int angle;
public void act()
{
movement();
rotation();
shoot();
}
public void movement(){
int x = 0;
int y = 0;
if(Greenfoot.isKeyDown("w")){
y -= speed;
health++;
}
if(Greenfoot.isKeyDown("s")){
y += speed;
health--;
}
if(Greenfoot.isKeyDown("a")){
x -= speed;
}
if(Greenfoot.isKeyDown("d")){
x += speed;
}
setLocation(getX() + x, getY());
if(getOneIntersectingObject(Wall.class) != null){
if(x > 0){
setLocation(getX() - x - 2, getY());
}
else{
setLocation(getX() - x + 2, getY());
}
}
setLocation(getX(), getY() + y);
if(getOneIntersectingObject(Wall.class) != null){
if(y > 0){
setLocation(getX(), getY() - y - 2);
}
else{
setLocation(getX(), getY() - y + 2);
}
}
}
public void rotation(){
if(Greenfoot.getMouseInfo() != null){
turnTowards(Greenfoot.getMouseInfo().getX(),Greenfoot.getMouseInfo().getY());
}
angle = getRotation();
}
public void shoot(){
int buttonsDown;
if(Greenfoot.mousePressed(null)){
buttonsDown++;
}
if(Greenfoot.mouseClicked(null)){
buttonsDown--;
}
if(buttonsDown != 0){
getWorld().addObject(new Bullet(),getX(),getY());
}
}
}private void shoot(){
MouseInfo mi = Greenfoot.getMouseInfo();
if (buttonsDown == 0 && Greenfoot.mousePressed(null) && mi.getButton() == 1) buttonsDown = 1;
if (buttonsDown == 1 && Greenfoot.mouseClicked(null) && mi.getButton() == 1) buttonsDown = 0;
if (buttonsDown == 1) getWorld().addObject(new Bullet(), getX(), getY());
}private void shoot(){
MouseInfo mi = Greenfoot.getMouseInfo();
if (buttonsDown == 0 && Greenfoot.mousePressed(null) && mi.getButton() == 1) buttonsDown = 1;
if (buttonsDown == 1 && Greenfoot.mouseClicked(null) && mi.getButton() == 1) buttonsDown = 0;
if (buttonsDown == 1) getWorld().addObject(new Bullet(), getX(), getY());
}