2012-11-12 75 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

是的,我讓我在幾分鐘前工作。謝謝! –