This site requires JavaScript, please enable it in your browser!
Greenfoot back
GTRLambo26
GTRLambo26 wrote ...

2016/11/27

Trying to animate my character

GTRLambo26 GTRLambo26

2016/11/27

#
I am making a game, but for some reason my animation code isn't working. I've looked all over this website, but nothing is working. Here is my code:
import greenfoot.*;
public class player extends Actor
{
    private GreenfootImage up = new GreenfootImage("player_up.png");
    private GreenfootImage down = new GreenfootImage("player_down.png");
    private GreenfootImage down1 = new GreenfootImage("player_down1.png");
    private GreenfootImage down2 = new GreenfootImage("player_down2.png");
    private GreenfootImage down3 = new GreenfootImage("player_down3.png");
    private GreenfootImage down4 = new GreenfootImage("player_down2.png");
    private GreenfootImage down5 = new GreenfootImage("player_down1.png");
    private GreenfootImage down6 = new GreenfootImage("player_down.png");
    private GreenfootImage down7 = new GreenfootImage("player_down4.png");
    private GreenfootImage down8 = new GreenfootImage("player_down5.png");
    private GreenfootImage down9 = new GreenfootImage("player_down6.png");
    private GreenfootImage down10 = new GreenfootImage("player_down5.png");
    private GreenfootImage down11 = new GreenfootImage("player_down4.png");
    private GreenfootImage left = new GreenfootImage("player_left.png");
    private GreenfootImage right = new GreenfootImage("player_right.png");
    public player()
    {
        setImage(down);
        down.scale(30, 60);
        down6.scale(30, 60);
        down5.scale(30, 60);
        down4.scale(30, 60);
        down3.scale(30, 60);
        down2.scale(30, 60);
        down1.scale(30, 60);
        up.scale(30, 60);
        left.scale(30, 60);
        right.scale(30, 60);
    }
    public void animateDown()
    {
        if(getImage().equals(down)){setImage(down1);}else{setImage(down);}
        if(getImage().equals(down1)){setImage(down2);}else{setImage(down1);}
        if(getImage().equals(down2)){setImage(down3);}else{setImage(down2);}
        if(getImage().equals(down3)){setImage(down4);}else{setImage(down3);}
        if(getImage().equals(down4)){setImage(down5);}else{setImage(down4);}
        if(getImage().equals(down5)){setImage(down6);}else{setImage(down5);}
        if(getImage().equals(down6)){setImage(down7);}else{setImage(down6);}
        if(getImage().equals(down7)){setImage(down8);}else{setImage(down7);}
        if(getImage().equals(down8)){setImage(down9);}else{setImage(down8);}
        if(getImage().equals(down9)){setImage(down10);}else{setImage(down9);}
        if(getImage().equals(down10)){setImage(down11);}else{setImage(down10);}
        if(getImage().equals(down11)){setImage(down);}else{setImage(down11);}
    }
    public void act()
    {
        if(Greenfoot.isKeyDown("right"))
        {
            move(2);
            setImage(right);
        }
        if(Greenfoot.isKeyDown("left"))
        {
            move(-2);
            setImage(left);
        }

        if(Greenfoot.isKeyDown("up"))
        {
            setLocation(getX(), getY()-2);
            setImage(up);
            
        }
        if(Greenfoot.isKeyDown("down"))
        {
            setLocation(getX(), getY()+2);
            setImage(down);
            animateDown();
        }
    }
}
Help is much appreciated.
Super_Hippo Super_Hippo

2016/11/27

#
Remove all the 'else ...' from the animateDown method. You only need to make sure that if no down1...11 image is used (so coming from a different direction), you set one.
You need to login to post a reply.