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

1voto

Sprite con movimiento no se mueve en Libgdx

Tengo el Sprite puesto,correctamente.Pero cuando pongo movimiento no se mueve y no entiendo que sucede.
¿Que podría ser?

Este es mi codigo:

public void draw (SpriteBatch Batcher){

        personaje.draw(Batcher);
    }

            public void update() {

                if(Gdx.input.isTouched()){

                    if(Gdx.input.getX()> personaje.getX()){
                    cuerpoJugador.applyLinearImpulse(
                            new Vector2 (1,0),
                    cuerpoJugador.getLocalCenter(),true);

                    }

                    else if(Gdx.input.getX()< personaje.getX()){
                        cuerpoJugador.applyLinearImpulse(
                                new Vector2 (-1,0),
                        cuerpoJugador.getLocalCenter(),true);
                    }

                     personaje.setRotation(cuerpoJugador.getTransform().getRotation());

                personaje.setPosition(cuerpoJugador.getPosition().x,cuerpoJugador.getPosition().y);
        }
            }

    Mi render:

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

    jugador.update();

    Batcher.begin();
    piso.draw(Batcher);
    personaje.draw(Batcher);
    Batcher.end();

Codigo:

public void show() {

    piso = new Sprite(new Texture(Gdx.files.internal("plataforma1.png")));
    piso.setPosition(0,-400);
    mundo = new World ( new Vector2(0,-98f),true);
    Batcher = new SpriteBatch();
    escenario = new Plataforma(this,200,100);
    jugador = new Jugador(this,200,200);
    personaje = new Sprite(new Texture(Gdx.files.internal("panda1.png")));
    personaje.setPosition(20,190);

1 Respuesta

1voto

white Puntos75880

Cual es la clase que contiene este método?

public void draw (SpriteBatch Batcher){
    personaje.draw(Batcher);
}

personaje tiene relacion con jugador?
cual debe moverse jugador o personaje?

0voto

white comentado

De que tamaño es tu sprite? estas dandole una fuerza de 1 si tu personaje tiene un tamaño considerable, entonces le estas dando muy poca fuerza y no basta para moverlo.

Tenias otras falencias en tú codigo, declarabas sprites que nunca se usaban, para que declaras personaje y un Batcher ? en la clase MyGame si nunca los utilizas en esta?

Como consejo, por favor manten ordenado tu código, no des espacios ni saltos de linea excesivos, sigue las buenas practicas para formatear tu código.

Tus ficheros corregidos:

MyGame => http://paste.ofcode.org/PL4z29HvQRA8jKimZAERLj
PantallaJuego => http://paste.ofcode.org/n5EEE7BGrZmU4Y7FHJkp2s
Jugador => http://paste.ofcode.org/iSbSfbFUTbaSeer8NatQFS
Plataforma => http://paste.ofcode.org/xhDY6Zaw3n8tp2NXz7ikY8

te regalo un enlace donde explican como seguir una buena convencion para el codigo en java:

http://www.um.es/docencia/vjimenez/ficheros/practicas/ConvencionesCodigoJava.pdf

saludos!

0voto

carla_Maria comentado

Era el impulso ^-^
Lo único que ahora el personaje se cae solo,hacía abajo.
Sera por la gravedad ¿no?

Gracias :)

0voto

carla_Maria comentado

Era el impulso ^-^
Lo único que ahora el personaje se cae solo,hacía abajo.
Sera por la gravedad ¿no?

Gracias :)

0voto

white comentado

en efecto, es la gravedad la que mueve el cuerpo de jugador constantemente.

en el metodo crearPiso()

debes definir la posicion y el tamaño.

el tamaño:

forma.setAsBox(Gdx.graphics.getWidth(), 0);

la posicion:

cuerpo.position.set(0,0);

en tu clase PantallaJuego defines una nueva instancia de Plataforma asi: escenario = new Plataforma(this, 200, 100);

y en tu clase plataforma esta: piso.setPosition(x,y);

eso quiere decir que el sprite esta en posicion (200, 100) y el cuerpo estatico del piso esta en (0, 0), al cuerpo no lo vas a poder ver pero al sprite si.

 X                                     
 ^                                     
 |                                     
 |                                     
 |                                     
 |                  * piso (200, 100)  
 |                                     
 |                                     
 |                                     
 |* cuerpo (0, 0)                      
 +---------------------------------->Y 

corrige la posicion de cuerpo de acuerdo a la de piso.

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