2013-06-11 3 views
2

Я пытался создать игру, в которой падает человек. Размер моей фоновой текстуры составляет 480x3200, и я пытаюсь создать игру, чтобы камера удерживала человека посередине экрана во время падения, а затем останавливалась внизу. Но я не могу получить, что мой фон простирается за пределы экрана, в котором он начинается, и затем сможет увидеть остальную часть изображения.libGDX Перемещение орфографической камеры вниз по текстуре

Весь мой код прямо сейчас уменьшает изображение 480x3200 вниз, чтобы соответствовать моему текущему экрану (который я установил как 480x800), а затем, когда человек падает, фон не изменяется.

Вот мой класс WorldRenderer, где я пытался делать разные вещи, но каждый раз я никогда не смогу заставить человека увидеть другую часть изображения, когда он начнет двигаться вниз.

public WorldRenderer(SpriteBatch b, World w) { 
    this.world = w; 
    this.cam = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT); 
    this.cam.position.set(CAMERA_WIDTH/2, Person.position.y,0); 
    this.cam.setToOrtho(false, CAMERA_WIDTH, CAMERA_HEIGHT); 
    this.cam.update(); 
    spriteBatch = b; 
    loadTextures(); 
} 

public void render(float delta) { 
    person = world.getPerson(); 

    moveCamera(); 
    cam.update(); 
    spriteBatch.setProjectionMatrix(cam.combined); 

    spriteBatch.disableBlending(); 
    spriteBatch.begin(); 
    renderBackground(); 
    spriteBatch.end(); 

    spriteBatch.enableBlending(); 
    spriteBatch.begin(); 
    renderObjects(); 
    spriteBatch.end(); 

} 

private void moveCamera() { 
    cam.position.set(cam.position.x, Person.position.y, 0); 
    cam.update(); 
} 

private void renderObjects() { 
    renderPerson(); 
    renderBlocks(); 
    renderPlatforms(); 
} 

private void renderBackground() { 
    spriteBatch.draw(backgroundTexture, cam.position.x - CAMERA_WIDTH/2, cam.position.y - CAMERA_HEIGHT/2, CAMERA_WIDTH, CAMERA_HEIGHT); 
} 
} 

У кого-нибудь есть предложения?

Редактировать: Спасибо, я изменил ничью в renderBackground на spriteBatch.draw(backgroundTexture,0,0, CAMERA_WIDTH, CAMERA_HEIGHT * 4);, и теперь он работает.

ответ

1
spriteBatch.draw(backgroundTexture, cam.position.x - CAMERA_WIDTH/2, 
    cam.position.y - CAMERA_HEIGHT/2, CAMERA_WIDTH, CAMERA_HEIGHT); 

Этот код рисует фоновое изображение относительно положения камеры. Вот почему изменение положения камеры не влияет на положение фонового изображения. Измените его на что-то вроде этого:

spriteBatch.draw(backgroundTexture,0,0); 
1

Или и может просто использовать ParrallaxBackground и ParrallaxLayer класс

Таким образом, у не должны управлять ур камеры

Ее сделано оптимальным образом в указанном классе ,

Смежные вопросы