Hilfe bei JavaFXGL Animationen?

Guten Tag,

ich schaue mir gerade die Engine JavaFXGL an und teste einige Sachen aus. Bis jetzt hat auch alles geklappt, doch tritt nun bei den Animationen ein Problem auf: Die Animationen werden nicht während dem Laufen angezeigt, sondern erst danach. Ich habe leider keine Ahnung, was das Problem ist, da ich meinen Code auch sehr nah am TutorialCode gehalten habe. Hier ist der Code der Animations - Klasse:


public class PlayerAnimation extends Component {

    Direction direction;

    private int speed = 0;

    private AnimatedTexture texture;
    private AnimationChannel animWalkUp, animWalkDown, animWalkRight, animWalkLeft;

    public PlayerAnimation() {

        animWalkUp = new AnimationChannel(FXGL.image("character-back.png"), 4, 16, 22, Duration.seconds(1), 0, 3);
        animWalkDown = new AnimationChannel(FXGL.image("character-front.png"), 4, 16, 22, Duration.seconds(1), 0, 3);
        animWalkRight = new AnimationChannel(FXGL.image("character-right.png"), 4, 16, 22, Duration.seconds(1), 0, 3);
        animWalkLeft = new AnimationChannel(FXGL.image("character-left.png"), 4, 16, 22, Duration.seconds(1), 0, 3);

        texture = new AnimatedTexture(animIdleDown);
    }

    @Override
    public void onAdded() {
        entity.getViewComponent().addChild(texture);
    }

    @Override
    public void onUpdate(double tpf) {
        if (speed != 0) {
            switch (direction) {
            case UP:
                    texture.loopAnimationChannel(animWalkUp);
                    entity.translateY(speed);  break;           
            case DOWN:
                    texture.loopAnimationChannel(animWalkDown);
                    entity.translateY(speed); break;     
            case LEFT:
                    texture.loopAnimationChannel(animWalkLeft);
                    entity.translateX(speed); break;            
            case RIGHT:
                    texture.loopAnimationChannel(animWalkRight);
                    entity.translateX(speed); break; 
            default:
                break;
            }   
            speed = 0;
        }
    }

    public void moveUp() {
        speed = -2;
        direction = Direction.UP;
    }
    public void moveDown() {
        speed = 2;
        direction = Direction.DOWN;
    }
    public void moveLeft() {
        speed = -2;
        direction = Direction.LEFT;
    }
    public void moveRight() {
        speed = 2;
        direction = Direction.RIGHT;
    }
}

In der Main-Methode rufe ich dann bei Tastendruck die jeweiligen Methoden auf: (Als Beispiel nur für die Taste W)

protected void initInput() {
        
        FXGL.getInput().addAction(new UserAction("Up") {
            @Override
            protected void onAction() {
                player.getComponent(PlayerAnimation.class).moveUp();
            }
        }, KeyCode.W);
}

Damit bewegt sich der Spiele auch ohne Probleme, nur die Animation funktioniert nicht richtig.

Ich hoffe ihr könnt mir helfen.

Spiele, PC, Computer, Animation, Programm, Java, java programmieren, Spiele entwicklung, Spiele und Gaming

Meistgelesene Fragen zum Thema Animation