2012-11-12 41 views
3

我试图做一个第一个超级马里奥级别的翻拍。除了平铺以外,我几乎都能成功。如果任何人都可以快速浏览我的代码并解释我做错了什么,那会很棒!我已经解决了几天了。谢谢!此外,我不能发布图片,直到我的声望更高,所以这里有一个链接。我与LibGDX TileMaps很难过

http://dl.dropbox.com/u/88813088/upload.html

首先,这里是我的影像地图集。它命名为 “world.png”:

(链接的网站上的第一张图片)

其次,这里就是我试图产生:

(网站中第二张图片)

我保存TMX文件,并使用TexturePacker后,我得到这样的结果:

(网站中最后一张图片)

它好像瓷砖ATL因为没有被分割成32x32位。相反,每32个像素,整个图像一次又一次地显示在彼此之上。 这是我的其他代码。我希望你们中的一位能帮我修复它。这将是壮观的。

这是我的主要Java代码。它被命名为“MainGame.java”:

package com.chanceleachman.marioExample.Screens; 

import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.Screen; 
import com.badlogic.gdx.graphics.GL10; 
import com.badlogic.gdx.graphics.OrthographicCamera; 
import com.badlogic.gdx.graphics.g2d.tiled.TileAtlas; 
import com.badlogic.gdx.graphics.g2d.tiled.TileMapRenderer; 
import com.badlogic.gdx.graphics.g2d.tiled.TiledLoader; 
import com.badlogic.gdx.graphics.g2d.tiled.TiledMap; 
import com.chanceleachman.marioExample.MarioExample; 

public class MainGame implements Screen { 

OrthographicCamera camera; 
TileMapRenderer tileMapRenderer; 
TiledMap map; 
TileAtlas atlas; 

private MarioExample game; 

public MainGame(MarioExample game) { 
    this.game = game; 
} 

@Override 
public void render(float delta) { 
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // #14 
    Gdx.gl.glClearColor(0, 0, 1, 1); 
    tileMapRenderer.render(0, 0, 800, 480); 
    camera.zoom = 10; 
} 

@Override 
public void resize(int width, int height) { 
} 

@Override 
public void show() { 
    camera = new OrthographicCamera(Gdx.graphics.getWidth(), 
      Gdx.graphics.getHeight()); 

    map = TiledLoader.createMap(Gdx.files.internal("map/map.tmx")); 

    atlas = new TileAtlas(map, Gdx.files.internal("map/")); 

    tileMapRenderer = new TileMapRenderer(map, atlas, 32, 32); 

} 
} 

这是我的来自Tiled程序的Tmx文件。它被命名为“map.tmx”:

<?xml version="1.0" encoding="UTF-8"?> 
<map version="1.0" orientation="orthogonal" width="25" height="15" tilewidth="32" tileheight="32"> 
<tileset firstgid="1" name="world" tilewidth="32" tileheight="32"> 
<image source="level.png" width="512" height="32"/> 
</tileset> 
<layer name="Tile Layer 1" width="25" height="15"> 
<data encoding="base64" compression="zlib"> 
eJxjZGBgYBzFo3gUj+JRPKwwAFOoAXg= 
</data> 
</layer> 
</map> 

这是我的地图打包文件代码。它被命名为“地图packfile”:

level.png 
format: RGBA8888 
filter: Nearest,Nearest 
repeat: none 
level 
    rotate: false 
    xy: 0, 0 
    size: 480, 32 
    orig: 480, 32 
    offset: 0, 0 
    index: 0 

我认为这只是总结它。对任何回应此事的人,非常感谢!哦,还有,原来这里是我的教程如下:

  1. http://code.google.com/p/libgdx/wiki/GraphicsTileMaps

再次,谢谢!如果我留下任何重要的东西,请告诉我! :)

回答

3

TexturePacker似乎被窃听,我从来没有能够使其正常工作,然后使用LibGDX中的文件。尝试使用其他工具创建.png file & packfile,请参阅我的回答here

+0

在发布之前,我完全遵循了这一点!哈哈。我也有这个问题,渲染不起作用!我能够得到这个工作,但不是平铺。我会继续鼓捣你写的方法。如果你已经使用该工具,我应该可以。谢谢。 –

+0

我的解决方案如何工作? – Flawyte

+0

是的,我让我在几分钟前工作。谢谢! –