Hey guys I'm trying to make a game but I can't find a way to animate an attack after I press 'X' . I already have a set of sprites and all but I don't know how to delay any other animations until the attack animation is finished. Help ?
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Player here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Player extends Actor
{
/**
* Act - do whatever the Player wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
private final GreenfootImage[] idleLeftAnimation =
{
new GreenfootImage("yeethmm.png"),
new GreenfootImage("yeethmm2.png"),
new GreenfootImage("yeethmm3.png")
};
private final GreenfootImage[] idleRightAnimation =
{
new GreenfootImage("left1.png"),
new GreenfootImage("left2.png"),
new GreenfootImage("left3.png")
};
private final GreenfootImage[] RunRightAnimation =
{
new GreenfootImage("run_right_0.png"),
new GreenfootImage("run_right_1.png"),
new GreenfootImage("run_right_2.png"),
new GreenfootImage("run_right_3.png"),
new GreenfootImage("run_right_4.png"),
new GreenfootImage("run_right_5.png")
};
private final GreenfootImage[] RunLeftAnimation =
{
new GreenfootImage("run_left_0.png"),
new GreenfootImage("run_left_1.png"),
new GreenfootImage("run_left_2.png"),
new GreenfootImage("run_left_3.png"),
new GreenfootImage("run_left_4.png"),
new GreenfootImage("run_left_5.png")
};
private final GreenfootImage[] AttackRightAnimation =
{
new GreenfootImage("adventurer-attack1-00.png"),
new GreenfootImage("adventurer-attack1-00.png"),
new GreenfootImage("adventurer-attack1-00.png"),
new GreenfootImage("adventurer-attack1-00.png"),
new GreenfootImage("adventurer-attack1-00.png")
};
public int[] ok ={0,0,0,0};
public int frame=0;
public char direction='l';
public int base_speed=5;
public void act()
{
// if (attack()) {animateAttackRight();}
if(move()) {if (direction=='l')
animateRunLeft();
else animateRunRight();
}
else if (direction=='r')
animateIdleLeft();
else animateIdleRight();
}
public boolean move()
{
// Add your action code here.
moveLeft();
moveRight();
moveUp();
moveDown();
if (ok[0]==ok[2] && ok[1]==ok[3]) return false;
return true;
}
public boolean attack()
{
if (Greenfoot.isKeyDown("x")) //algoritm de combat
return true;
return false;
}
public void moveLeft()
{
if (Greenfoot.isKeyDown("left") || Greenfoot.isKeyDown("a"))
{setLocation(getX()-base_speed,getY());
direction='l';
ok[3]=1;}
else ok[3]=0;}
public void moveRight()
{
if (Greenfoot.isKeyDown("right") || Greenfoot.isKeyDown("d"))
{setLocation(getX()+base_speed,getY());
direction='r';
ok[1]=1;}
else ok[1]=0;}
public void moveUp()
{
if (Greenfoot.isKeyDown("up") || Greenfoot.isKeyDown("w"))
{setLocation(getX(),getY()-base_speed);
ok[0]=1;}
else ok[0]=0;}
public void moveDown()
{
if (Greenfoot.isKeyDown("down") || Greenfoot.isKeyDown("s"))
{setLocation(getX(),getY()+base_speed);
ok[2]=1;}
else ok[2]=0;}
public void animateIdleLeft()
{
frame++;
setImage(idleLeftAnimation[frame/20]);
if (frame==59) frame=-1;
}
public void animateIdleRight()
{
frame++;
setImage(idleRightAnimation[frame/20]);
if (frame==59) frame=-1;
}
public void animateRunRight()
{
frame++;
setImage(RunRightAnimation[frame/10]);
if (frame==59) frame=-1;
}
public void animateRunLeft()
{
frame++;
setImage(RunLeftAnimation[frame/10]);
if (frame==59) frame=-1;
}
public void animateAttackRight()
{
frame++;
setImage(AttackRightAnimation[frame/3]);
if (frame==8) frame = -1;
}
}

