2016-10-10 6 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); 
をしなければならなかったでした
関連する問題