I'm fairly new to the world of coding, and there's probably a simple solution here. I made this array (the actual one is more complex since it includes everything I have so far) for the y values of every object that needs to be rendered, but I don't know how to use it to keep track of which y values correspond to which object in order to draw them from lowest y value to highest y value.
int [] yValues = {deer.getY(), sprite.getY(), tree.getY()+150};
Arrays.sort(yValues);
The deer just randomly walks around, and the player (sprite) is controlled by arrow keys. I added to the y value of the trees so that characters that walk around would stay behind them.
Right now I've hard-coded the layering, depending on when the sprite is in front of or behind the tree (hair and skin y positions are dependent on the y position of the sprite, which is why I didn't include them in the yValues array).
//Printing order
if (sprite.getY() < tree1.getY()+150) { //if the player is behind the tree
g2d.drawImage(deer.getImage(), deer.getX(), deer.getY(), this);
g2d.drawImage(sprite.getImage(), sprite.getX(),
sprite.getY(), this);
g2d.drawImage(skin.getImage(), sprite.getX(),
sprite.getY(), this);
g2d.drawImage(hair.getImage(), sprite.getX(),
sprite.getY(), this);
//the tree is drawn after everything else
g2d.drawImage(tree.getImage(), tree.getX(), tree.getY(), this);
}
if (sprite.getY() >= tree1.getY()+150) { //if the player is in front of the tree
//the tree is drawn before everything else
g2d.drawImage(tree.getImage(), tree.getX(), tree.getY(), this);
g2d.drawImage(deer.getImage(), deer.getX(), deer.getY(), this);
g2d.drawImage(sprite.getImage(), sprite.getX(),
sprite.getY(), this);
g2d.drawImage(skin.getImage(), sprite.getX(),
sprite.getY(), this);
g2d.drawImage(hair.getImage(), sprite.getX(),
sprite.getY(), this);
}
From here, how would I use the yValues array to order the drawing?
[I found this post helpful to what I'm trying to do] (Java Slick2d image depth/layering).