2014-09-07 1 views
0

지도 끝에서 카메라 이동을 멈추려 고했지만 계속 움직입니다. 내 코드에서 오류를 찾을 수 없습니다카메라 이동 중지

@Override 
public void render(float delta) {  
//moving tiled map 
camera.position.x=camera.position.x+Gdx.graphics.getDeltaTime()*200; 

camera.update(); 
//........................................... 

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


// renderer camera and map 
renderer.setView(camera); 
renderer.render(); 
//................................................... 

    } 

    @Override 
    public void show() { 

    batch = new SpriteBatch(); 


    map = new TmxMapLoader().load("maps/map1.tmx"); 

    renderer = new OrthogonalTiledMapRenderer(map); 

    camera = new OrthographicCamera(); 
    } 

    @Override 
    public void hide() { 

    } 

    @Override 
    public void create() { 

    } 

    @Override 
    public void resize(int width, int height) { 
    camera.viewportWidth = width; 
    camera.viewportHeight = height; 
    camera.position.set(width/2f, height/3f, 0); //by default camera position on (0,0,0) 
    camera.update(); 


    } 

    @Override 
    public void render() { 



    } 

@Override 
public void pause() { 


} 

@Override 
public void resume() { 


} 

@Override 
public void dispose() { 
map.dispose(); 
renderer.dispose(); 

} 
} 

:

여기 내 코드입니다.

그럼 내 질문은지도 끝에서 카메라가 움직이지 않도록하는 방법입니다.

답변

0

당신은 그렇게 타일 맵에서 적어도 하나 개의 층이 있습니다

TiledMap map = ......//whatever method that you are using to load a map 
//skip to the part that the map is loaded 
TiledMapLayer layer = (TiledMapLayer)map.getLayers().get(0); 
int layerWidth = layer.getWidth()*layer.getTileWidth(); 

을 그리고 지금, 당신은 픽셀에서 레이어의 폭 을 알고, 요 camera.position.x+Gdx.graphics.getDeltaTime()*200; 결코이 길이를 초과하지 않아야 할 수 있습니다.