Спирт рисуется под фоном

1

Я разрабатываю StateBasedGame в Slick2D (только для обучения), и я столкнулся с проблемой.

walkingRight.draw(0,250);

Эта анимация рисуется под фоновым спрайтом. Я понятия не имею, как это сделать. Я не вижу его вообще.

Полный код:

    package gamelogic;

import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.gui.MouseOverArea;
import org.newdawn.slick.state.*;

public class Level extends BasicGameState {

    // INITIATE IMAGES
    public Image background;
    public Image title;
    public Image playButton;
    public Image exitButton;

    public Animation walkingRight;
    public Animation playerIdle;
    public int[] duration = {200, 200, 200, 200, 200};
    public int durationIdle[] = {200, 200}; 


    // INITIATE VARIABLES FOR TITLE'S POSITION
    public float menuPosX;
    public float menuPosY;

    public Player player;

    // __CONSTRUCTOR
    public Level(int state) {

    }

    public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
        background = new Image("res/levelbg.png");
        Image[] walkRight = { new Image("res/player/snap0.png"), new Image("res/player/snap1.png"),
                new Image("res/player/snap2.png"), new Image("res/player/snap3.png"), new Image("res/player/snap4.png")};
            Image idle[] = { new Image("res/player/snap0.png"), new Image("res/player/snap1.png")};

            this.walkingRight = new Animation(walkRight, this.duration, false);
            this.playerIdle = new Animation(idle, this.durationIdle, false);        

    }

    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
        background.draw(0,0);
        playerIdle.draw(0,0);
    }

    public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
        Input input = gc.getInput();

            walkingRight.draw(0,250);

    }   

    public int getID() {
            return 1;
        }   
    }

Не могли бы вы, ребята, помочь мне?

Теги:
slick2d

1 ответ

1
Лучший ответ

Хорошо, я нашел решение. Вместо того, чтобы рисовать анимацию внутри функции update(), вы должны нарисовать ее только в функции render() один раз с переменными в качестве координат. В функции update() вы затем измените координаты и просто назначьте другую анимацию переменной анимации.

  • 1
    Это связано с порядком рендеринга. Обновление вызывается перед рендерингом, поэтому анимация отрисовывается, когда рендер вызывается, фон рисуется поверх анимации, а игрок в режиме ожидания рисуется поверх фона.
  • 0
    Я понял это самостоятельно после нескольких часов проб и ошибок, но я благодарен за комментарий, он немного проясняет мои мысли. Большое спасибо :).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню