Animationen Player funktionieren

master
Jonathan Hager 6 years ago
parent b162e3ac70
commit b1dd3b6631

@ -47,6 +47,7 @@ public class GameScreen {
ArrayList<AnimatedObject> mapItems;
Timer animations;
Timer animatePlayer;
Timer roomChangeTimer;
int roomChangeAnimationState;
@ -56,6 +57,8 @@ public class GameScreen {
TextureRegion[][] roomChangeTextureRegion;
int roomChangeRow;
boolean playerMoving;
HudContainer hc;
// Sound
@ -76,7 +79,7 @@ public class GameScreen {
//PLAYER
Texture[] playerTexture = new Texture[4];
playerTexture[0] = new Texture(Gdx.files.internal("sprites/legs.png"));
playerTexture[0] = new Texture(Gdx.files.internal("sprites/player.png"));
playerTexture[1] = new Texture(Gdx.files.internal("sprites/body.png"));
playerTexture[2] = new Texture(Gdx.files.internal("sprites/head.png"));
playerTexture[3] = new Texture(Gdx.files.internal("sprites/hair.png"));
@ -118,12 +121,25 @@ public class GameScreen {
public void run() {
if(objects != null){
for(AnimatedObject object : objects){
object.updateTexture();
object.updateTexture();
}
}
}
},0, 0.1f);
animatePlayer = new Timer();
animatePlayer.scheduleTask(new Timer.Task() {
@Override
public void run() {
if(!playerMoving){
player.updateIdle();
}
else{
player.updateWalking();
}
}
}, 0, 0.1f);
//Inventory TEST
hc = new HudContainer();
@ -152,18 +168,25 @@ public class GameScreen {
}
},0, 0.02f);
}
public void render (SpriteBatch batch, Player p, Entity[] e, Entity[] arrows, int tileX, int tileY, int level, int roomPosX, int roomPosY) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
playerMoving = (p.getMovementX() != 0 || p.getMovementY() != 0);
//setzt player Sprite auf richtige Position
player.update((int) p.getxPos(), (int) p.getyPos());
if(p.getMovementX() > 1){
player.setDirection(1);
player.updateFlip();
}
else if(p.getMovementX() < -1){
player.setDirection(0);
player.updateFlip();
}
tm = getM().getMaps()[level][roomPosX][roomPosY].getMap();
objects = getM().getMaps()[level][roomPosX][roomPosY].getObjects();

@ -22,22 +22,64 @@ public class PlayerSprite {
private TextureRegion[][][] regions;
private int[] frames;
// 0: links, 1: rechts
private int direction;
public PlayerSprite(Texture[] textures){
sprites = new Sprite[4];
regions = new TextureRegion[4][][];
frames = new int[4];
sprites = new Sprite[1];
regions = new TextureRegion[1][][];
frames = new int[2];
direction = 0;
for(int i = 0; i < regions.length; i++){
regions[i] = TextureRegion.split(textures[i], 48, 96);
sprites[i] = new Sprite(textures[i]);
regions[i] = TextureRegion.split(textures[i], 64, 64);
sprites[i] = new Sprite(regions[i][0][0]);
}
collisionSprite = new Rectangle(0, 0, 32, 16);
}
public void updateIdle(){
frames[1] = 0;
if(frames[0] >= 9){
frames[0] = 0;
}
else{
frames[0]++;
}
sprites[0].setRegion(regions[0][0][frames[0]]);
updateFlip();
}
public void updateWalking(){
frames[0] = 0;
if(frames[1] >= 9){
frames[1] = 0;
}
else{
frames[1]++;
}
collisionSprite = new Rectangle(0, 0, 48, 16);
sprites[0].setRegion(regions[0][2][frames[1]]);
updateFlip();
}
public void updateFlip(){
if(direction == 0 && !sprites[0].isFlipX()){
sprites[0].flip(true, false);
}
else if(direction == 1 && sprites[0].isFlipX()){
sprites[0].flip(false, false);
}
}
public void update(int xPos, int yPos){
for(int i = 0; i < sprites.length; i++){
sprites[i].setPosition(xPos, yPos);
sprites[i].setPosition(xPos - 16, yPos);
}
updateCollision(xPos, yPos);
@ -109,4 +151,18 @@ public class PlayerSprite {
public void setFrames(int[] frames) {
this.frames = frames;
}
/**
* @return the direction
*/
public int getDirection() {
return direction;
}
/**
* @param direction the direction to set
*/
public void setDirection(int direction) {
this.direction = direction;
}
}

Loading…
Cancel
Save