2016-10-10 66 views
0

我有一個玩家類,它的x和y位置是用xPos和yPos操縱的,我想創建一個跟隨玩家的相機。Java - 如何製作跟隨我的播放器的相機? Slick2D

到目前爲止,我已經試過這樣:

Camera類:

import org.newdawn.slick.GameContainer; 

public class Camera { 

    public int offsetMaxX; 
    public int offsetMaxY; 
    public int offsetMinX; 
    public int offsetMinY; 

    public int camX; 
    public int camY; 

    private Player player; 

    public Camera(Player p) { 

     //Setting offset max's and minimums 
     offsetMaxX = 0; 
     offsetMaxY = 0; 
     offsetMinX = 0; 
     offsetMinY = 0; 

     player = p; 

    } 

    public void update(GameContainer gc) { 

     camX = player.xPos - (gc.getWidth()/2); 
     camY = player.yPos - (gc.getHeight()/2); 

    } 

} 

而我在我的主類渲染功能是:

@Override 
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException { 

    //Translate to camera X and Y 
    g.translate(-camera.camX, -camera.camY); 

    //Scaling map 
    g.scale(3, 3); 
    //Rendering map 
    try { 
     mapRender.render(); 
    } catch (SlickException e1) { 
     e1.printStackTrace(); 
    } 

    //Draw player 
    player1.drawPlayer(g); 

} 

這工作,但相機而動比玩家慢。我該如何解決這個問題,還是有更好的方法來做到這一點?

任何和所有幫助表示讚賞!

回答

0

我自己修復了。當畫我的球員,我沒有

g.translate(.5, .5); 

所以我的定位相機時,我不得不這樣做

camX = ((player.xPos * 1.5f)) - (gc.getWidth()/2); 
camY = (player.yPos * 1.5f) - (gc.getHeight()/2);