2015-12-02 2 views
0

J'ai des problèmes avec Tiled et Libgdx. Je fais un jeu de plateforme de défilement et j'essaye de faire 1 (pour l'instant) le fond qui se répétera. La carte principale en mosaïque est composée de diverses images empilées l'une à côté de l'autre, une fois que je remplis toutes les cellules qui composent un fond complet (choses normales ..)Libgdx TiledMap rend les dalles partielles

Mon problème vient avec le rendu, comme vous pouvez le voir dans les images ci-dessous comme je déplace le personnage principal vers la droite l'image disparaît soudainement, je sais que le rendu carrelé est censé rendre seulement ce que vous verrez mais dans ce cas je vois encore une zone que le moteur de rendu arrête juste de rendre.

Comment faire pour que le moteur de rendu attende qu'une tuile soit hors de l'appareil avant qu'il arrête de la rendre?

Images:

Starting position is like at the middle of the first tile

Almost getting out of the first tile

En ce qui concerne le code que je suis en utilisant essentiellement le code dans this tutorial depuis que je suis en train de tester tout les choses comme ça:

public class PlayScreen implements Screen { 

private OrthographicCamera camera; 
private Viewport viewport; 

private World world; 
private Box2DDebugRenderer b2dRenderer; 


// Map 

private TiledMap tiledMap; 
private OrthogonalTiledMapRenderer mapRenderer; 


public PlayScreen(PGame game) { 
    this.game = game; 
    camera = new OrthographicCamera(); 
    camera.setToOrtho(false, PGame.V_WIDTH, PGame.V_HEIGHT);  

    viewport = new FitViewport(PGame.V_WIDTH/Constants.PPM, PGame.V_HEIGHT/Constants.PPM, camera); 
    camera.position.set(viewport.getWorldWidth()/4, viewport.getWorldHeight()/2, 0); 

    // No gravity for now.. 
    world = new World(new Vector2(0, -0*9.81f), true); 
    b2dRenderer = new Box2DDebugRenderer(); 

    // create the box of the player seen in the image 
    ..... 


    TmxMapLoader loader = new TmxMapLoader(); 

    tiledMap = loader.load("backgrounds/1.tmx"); 
    float unitScale = 1/100f; 
    mapRenderer = new OrthogonalTiledMapRenderer(tiledMap, unitScale); 




} 

public void update(float delta) { 

    // handle input to move the b2d body 
    ..... 


    world.step(1/60f, 6, 2); 

    // Make the camera follow the player 
    camera.position.set(player.getPosition()); 

    camera.update(); 
} 

@Override 
public void render(float delta) { 
    update(delta); 

    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 


    mapRenderer.setView(camera); 
    mapRenderer.render(); 

    b2dRenderer.render(world, camera.combined); 

} 

}

+0

sans code personne ne peut vous aider – george

+0

@george, comme je l'ai mentionné plus haut J'utilise pratiquement le même code expliqué dans le wiki LibGDX. J'ai placé le code ici et j'ai également coupé une partie du code inutile. Faites-moi savoir si cela vous aide à m'aider –

Répondre

0

Le problème est "résolu". J'ai testé le même code avec une autre carte qui a été faite avec de plus petits carreaux, apparemment cela se produit si vous avez des carreaux trop gros. À l'heure actuelle, le seul problème est que certaines lignes noires apparaissent, mais il semble que le remplissage est manquant. Si quelqu'un éprouve quelque chose comme ceci essayez avec des tuiles plus petites.