2012-12-26 35 views
0

我已经做了2D的Java游戏,我有一个二维地图,其中有障碍物上的一个矩形,我已经设置了矩形碰撞和他们没有工作,经过一些尝试我很快意识到,我为我的障碍物制作的矩形正在与我的玩家一起移动,我的意思是,如果我在坐标0,0上设置了一个矩形,它将保留在我的GUI的左上角,并在移动我的玩家时移动,它始终保持在那里,而不是固定在地图上。爪哇 - 矩形与播放器屏幕上移动

我有以下变量设置:

Animation bucky, movingUp, movingDown, movingLeft, movingRight 
Image worldMap; 
boolean quit = false; 
int[] duration = {200, 200}; 
int buckyPositionX = 0; 
int buckyPositionY = 0; 
int shiftX = buckyPositionX + 320; 
int shiftY = buckyPositionY + 160; 

而且在我的渲染方法,我有以下几点:

public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{ 
worldMap.draw(buckyPositionX, buckyPositionY);//position 0,0 
bucky.draw(shiftX, shiftY);//makes him appear at center of map 

if(quit==true){ 
    g.drawString("Resume(R)", 250, 100); 
    g.drawString("Main(M)", 250, 150); 
    g.drawString("Quit Game(Q)", 250, 200);  
    if(quit==false){ 
     g.clear(); 
    } 
} 
} 

如果我把我的渲染方法中:

g.fillRect(0,0,100,100); 

矩形将留在我的屏幕的左上角,我假设这发生在我设置我的矩形时减少我的变量,并尝试创建碰撞,这就是为什么我的碰撞不起作用。总的问题是,如何编辑我的代码以保持我的矩形卡在地图上,而不是随我的播放器一起移动。

+1

我想我们在这里需要更多的信息。世界地图是否大于屏幕的显示区域?你是如何存储碰撞等对象 –

+0

我猜巴基斯停留在窗口的中间和地图“移动”下方,在这种情况下,您的矩形将不会与巴克移动更多,他们都站在静止。而不是(0,0,100,100),则需要使用buckyPositionX和buckyPositionY – BevynQ

+0

为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 –

回答

0
if(quit==false){ 
     g.clear(); 
} 

部分将永远不会被执行,如果它永远不会被执行,那么它有什么意义?

+0

我认为他认为在单击任何字符串时将quit设置为false,但他试图仅显示必要的代码并将其取出。 – user7185318