No me sale el Sprite pero si veo que tiene movimiento.
¿Que podría ser?
Mi codigo:
public class PantallaJuego implements Screen {
public Texture texture;
public Sprite jugador;
public SpriteBatch Batcher;
public World mundo;
public Jugador personaje;
public OrthographicCamera cam;
public Body cuerpoJugador;
public PantallaJuego(MyGame myGame) {}
@Override
public void dispose() {
Batcher.dispose();
texture.dispose();
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void render(float arg0) {
Gdx.gl.glClearColor(0,0,0,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
mundo.step(1f/60f,6,2);
cam.position.x = personaje.jugador.getX();
cam.update();
personaje.update();
Batcher.begin();
personaje.draw(Batcher);
Batcher.setProjectionMatrix(cam.combined);
Batcher.draw(texture,0,0);
Batcher.end();
}
@Override
public void resize(int arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void show() {
mundo = new World ( new Vector2(0,0f),true);
Batcher = new SpriteBatch();
cam = new OrthographicCamera(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
texture = new Texture(Gdx.files.internal("fondo_demo.png"));
Vector2 cameraSize = new Vector2(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
cam = new OrthographicCamera(cameraSize.x, cameraSize.y);
cam.position.set(cam.viewportWidth / 2f, cam.viewportHeight / 2f, 0);
jugador = new Sprite(new Texture(Gdx.files.internal("panda1.png")));
personaje = new Jugador(this,200,-200);
}
}
public class BodyManager {
private final static float PX_TO_METERS = 80.f; // creamos los metros paradespues usarlosen el Sprite
public static BodyDef.BodyType DYNAMIC_BODY = BodyDef.BodyType.DynamicBody; // cremos el tipo de cuerpo dinamico
public static BodyDef.BodyType STATIC_BODY = BodyDef.BodyType.StaticBody; // creamos el tipo de cuerpo estatico
public Body cuerpoJugador;
public World mundo;
public PantallaJuego game;
protected Sprite jugador,piso;
protected Texture texture;
public SpriteBatch Batcher;
public Body createBody(World mundo , BodyProperties properties){
BodyDef cuerpo = new BodyDef(); // creamos un cuerpo
cuerpo.type = BodyDef.BodyType.DynamicBody; // creamos un cuerpo dinamico
cuerpo.position.set(properties.getPosition().x, properties.getPosition().y);
cuerpo.fixedRotation = true; // rotacion
Body body = mundo.createBody(cuerpo);
PolygonShape forma = new PolygonShape();
forma.setAsBox(
properties.getSize().y / 2 / PX_TO_METERS,
properties.getSize().x / 2 / PX_TO_METERS);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = forma;
fixtureDef.density = 1f;
forma.dispose();
return body;
}
public static class BodyProperties{
private BodyDef.BodyType type;
private Vector2 position;
private Vector2 size;
public Body cuerpoJugador;
public Sprite jugador;
public SpriteBatch Batcher;
public BodyProperties BodyProperties(Sprite jugador, BodyDef.BodyType dynamic){
setPosition(new Vector2(jugador.getX(), jugador.getY()));
setSize(new Vector2(jugador.getWidth(), jugador.getHeight()));
setType(dynamic);
return this;
}
public BodyProperties BodyProperties(){
position = new Vector2(0, 0);
size = new Vector2(0, 0);
type = DYNAMIC_BODY;
return this;
}
public BodyProperties setType(BodyDef.BodyType type) { this.type = type; return this; }
public BodyProperties setPosition(Vector2 position) { this.position = position; return this; }
public BodyProperties setSize(Vector2 size) { this.size = size; return this; }
public BodyDef.BodyType getType(){ return type; }
public Vector2 getPosition(){ return position; }
public Vector2 getSize(){ return size; }
}
}
public class Jugador {
public Body cuerpoJugador;
public Sprite jugador;
public Texture texture;
public SpriteBatch Batcher;
public World mundo;
public PantallaJuego game;
public Jugador(PantallaJuego pantallajuego,float x,float y){
this.game = pantallajuego;
jugador = new Sprite(
new Texture(Gdx.files.internal("panda1.png")));
jugador.setPosition(x, y);
BodyManager bodymanager = new BodyManager();
cuerpoJugador = bodymanager.createBody(
pantallajuego.mundo,
new BodyManager.BodyProperties()
.BodyProperties(jugador, BodyManager.DYNAMIC_BODY)
);
}
public void draw(SpriteBatch Batcher)
{
jugador.setPosition(
cuerpoJugador.getPosition().x,
cuerpoJugador.getPosition().y);
jugador.draw(Batcher);
update();
}
public void update(){
if(Gdx.input.isTouched()){
if(Gdx.input.getX()> jugador.getX()){
cuerpoJugador.applyLinearImpulse(
new Vector2(100,0),
cuerpoJugador.getLocalCenter(),true);
}
if(Gdx.input.getX()<jugador.getX()){
cuerpoJugador.applyLinearImpulse(
new Vector2(-100,0),
cuerpoJugador.getLocalCenter(),true);
}
}
}}