entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

No me muestra el Sprite en Libgdx

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);   
            }

            }
          }}

0voto

white comentado

Disculpa no entendi cual es el problema, a que te refieres con que no lo ves pero si tiene movimiento? por favor, podrias intentar con una captura de pantalla o una descripcion mas especifica.

saludos!

0voto

Peter comentado

Por favor pon el código aquí. Edita tu pregunta y agrega el código, tener que ir a otro sitio a verlo para regresar y contestar y luego volver a ir a verlo para buscar un error y tener que regresar y así sucesivamente hasta solucionar tu duda, no es correcto.

Saludos.

0voto

carla_Maria comentado

La camara de mi personaje veo como se mueve pero mi personaje no lo veo, no veo mi textura pero si veo como la camara que esta incorporada en mi jugador,cuando hago un Touch en la pantalla veo movimiento.Pero mi Sprite esta como invisible, no veo la imagen en la pantalla.Yo quiero ver mi personaje.¿Que pasa?

1 Respuesta

1voto

white Puntos75820

Es posible que la camara solo capte la posicion x de tu personaje. intenta captar la posicion y tambien, puede ser que tu personaje este en otra posicion del plano y no lo puedas ver.

cam.position.x = personaje.jugador.getX();
cam.position.y = personaje.jugador.getY();

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta