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

2021/3/17

Animation/Direction problem

Genota Genota

2021/3/17

#
Hello everyone, I got a problem. In my game I want it, that my enemy touches the Player.class and get animated... The enemy is moving from the right to the left with a counter and a direction method. Anyways, when I call it, only the negative animation get used like it completely doesnt matter wich direction the enemy is going to, it only animates "attack_l". Here is the code for the Enemy class:
public class Enemy3 extends Enemy
{
    private int speed = 4;
    private int direction = 1;
    private int frame = 3;
    private int animationCounter = 0;
    private int count = 0;
    
    private GreenfootImage attack1 = new GreenfootImage("genga1left_s.png");
    private GreenfootImage attack2 = new GreenfootImage("genga2left_s.png");
    private GreenfootImage attack3 = new GreenfootImage("genga3left_s.png");
    private GreenfootImage attack4 = new GreenfootImage("genga4left_s.png");
    
    private GreenfootImage attack1_1 = new GreenfootImage("genga1right_s.png");
    private GreenfootImage attack2_1 = new GreenfootImage("genga2right_s.png");
    private GreenfootImage attack3_1 = new GreenfootImage("genga3right_s.png");
    private GreenfootImage attack4_1 = new GreenfootImage("genga4right_s.png");
    /**
     * Act - do whatever the Enemy3 wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        setLocation(getX() + speed,getY());
        count = (count+1)%120;
        if (count == 0) speed = -speed;
        { 
         direction =-1;
        }
        if(isTouching(Player.class) && direction == -1)
        {
            if(animationCounter % 6 == 0)
            animateattack_l();
        }
        else if(isTouching(Player.class) && direction == 1)
        {
            if(animationCounter % 6 == 0)
            animateattack_r();
        }
        animationCounter++;
    }    
danpost danpost

2021/3/17

#
On line 26, remove "speed = -speed;". Then change line 28 to:
direction = -direction;
Genota Genota

2021/3/17

#
Okay, but now he is just moving infinit to the right and not turning after the counter to the left like before.
danpost danpost

2021/3/17

#
Genota wrote...
Okay, but now he is just moving infinit to the right and not turning after the counter to the left like before.
Multiply speed by direction in line 24.
You need to login to post a reply.