2014-12-13 14 views
0

저는 Minecraft (2D로)와 같은 게임을 만들려고합니다. 타일 맵을 사용하고 싶지 않다. 랜덤 맵을 생성하는 방법이 없다.Libgdx TiledMap없이 빠른 맵 만들기

내 시험 & 코드 :

public class game implements ApplicationListener { 
    private OrthographicCamera camera; 
    private SpriteBatch batch; 

    private Sprite block[] = new Sprite[26]; 
    private int createdBlocks = 0; 
    private int line = 0; 
    @Override 
    public void create() {  
     float w = Gdx.graphics.getWidth(); 
     float h = Gdx.graphics.getHeight(); 

     camera = new OrthographicCamera(w, h); 
     batch = new SpriteBatch(); 

     camera.position.x = 480; 
     camera.position.y = 320; 
     camera.update(); 

     graphics.create(); 
     player.create(); 
    } 

    @Override 
    public void dispose() { 
     batch.dispose(); 
    } 

    @Override 
    public void render() { 
     for(int i=0; i<=25;i++){   
      block[i] = new Sprite(graphics.stone); 
      if(i==5 || i==10 || i==15 || i==20) 
      line++; 
      int i2 = i; 
      if(i > 5) 
      i = 0; 
      block[i].setPosition(i2 * 32, line * 32); 
     } 
     Gdx.gl.glClearColor(1, 1, 1, 1); 
     Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

     batch.setProjectionMatrix(camera.combined); 
     batch.begin(); 
     player.render(batch); 
     for(int i=0; i<=100;i++) 
     block[i].draw(batch); 
     batch.end(); 
    } 

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

    @Override 
    public void pause() { 
    } 

    @Override 
    public void resume() { 
    } 
} 

의 단지 보온, 느린 (로드)되지는 유용합니다.

더 좋은 방법은 무엇입니까? 당신의 코드에 대한

+1

렌더링 할 때마다 25 개의 새로운 Sprite (돌)를 다시 초기화합니다. 왜 그렇게 지연되는지와 관련이 있습니다. for 루프를 렌더링 메서드의 맨 위에있는 create 메서드로 옮깁니다. – grimrader22

답변

2

:

당신은 새로운 스프라이트를 많이 만들 때마다 프레임 (render() 방법 내부 루프). 다른 곳에서 스프라이트를 만들어야합니다 (아마도 create() 방법 일 것입니다). 당신은 타일 기반 지형을 구축하기위한 SpriteCache 대신 SpriteBatch을 사용할 수 있습니다

: TiledMap없이지도를 만드는 방법에 대한

. 당신은 TiledMap

.tmx 파일의 임의 세대에 대해 SpriteCachehere

를 사용하는 예를 살펴 수 있습니다 - 다만 XML 구조화 된 파일입니다. 임의의 XML 파서로 원하는대로 코드로 생성 할 수 있기 때문에 랜덤 TiledMap을 만드는 것이 문제가되지 않습니다. 다음은 몇 가지 기본 지침입니다.

  1. 임의 맵용 타일 세트를 만듭니다.
  2. tmx 편집기에서이 세트를 사용하여 예제 맵을 작성하십시오.
  3. 텍스트 편집기로 파일을 열고 파일 구조를 살펴보십시오.

나는 경우 90 %에서, 2D지도에 대한 자신의 솔루션을 개발을하지 않는 것이 좋습니다 PS TMX (당신이 libgdx parser에 내장 사용할 수 있습니다) 어떤 XML 파서 코드에서 유사한 파일을 생성 2D지도를 만들기에 충분합니다. 또한 이미 libgdx 내에 tmx 렌더링 클래스를 최적화했습니다.

+0

@ 감사합니다.이 감사의 이유 또는 이유를 알지 못하는 경우에 대답이 문제 해결에 도움이된다면 환영합니다. –

+0

감사합니다! 그러나 ive는 다른 길을 찾았습니다! ;) \t \t batch.setProjectionMatrix (camera.combined); \t \t batch.begin(); \t \t 찾는 (나는이 100 <; I = 0 int로 난 ++) {위한 \t \t \t (INT의 I2 = 0; I2 <100; I2 ++) { \t \t \t \t batch.draw (그래픽.돌, 32 * i2, 32 * i); \t \t \t \t \t }} \t \t player.render (배치); \t \t batch.end(); – AUser