gpt4 book ai didi

Java游戏,背景的矩形正在移动

转载 作者:行者123 更新时间:2023-12-04 05:17:27 25 4
gpt4 key购买 nike

我希望标题没有使这篇文章比现在更令人困惑。如果我确切地告诉您我到目前为止所做的事情,可能会更好地解释我遇到的问题:

游戏

我制作了一个非常简单的 2D 游戏,基本原理是,玩家使用键盘输入(向上、向下、向左、向右箭头)在 2D map 上移动,这个游戏有点像 pokemon View ,从顶部查看,只需为每个键盘输入使用以下代码即可设置他的速度:

 if(input.isKeyDown(Input.KEY_DOWN)){
bucky = movingDown;
buckyPositionY -= 2;
if(buckyPositionY<-550){//this is used to stop player from leaving the map
buckyPositionY += 2;}}

其他 3 个键盘输入也是如此。

问题

我制作了玩家可以四处移动的游戏,但问题是我在 map 上有物体,而此时我的玩家只是穿过它们,所以我需要设置碰撞,我知道如何使用矩形设置碰撞方法,但问题实际上是制作矩形。我知道这是一项简单的任务,但是在这个游戏中,每当我将矩形向下放置时,它会在我移动播放器时移动,我通过使用以下代码绘制矩形来对此进行测试:
g.fillRect(0,0,100,100);

这是我 map 上障碍物的坐标,当我绘制矩形时,它会出现在屏幕的左上角,当我移动播放器时,它会停留在那里(它会一直移动以停留在左上角),现在是对我来说是一个大问题,因为如果我的矩形正在移动,我的碰撞应该如何工作。我认为发生这种情况的原因是因为我的 map 非常大,这意味着我没有显示完整内容,而是将我的播放器放在屏幕中央,当他移动时,屏幕也会随着他移动以显示其余部分 map 。

代码

这是我的游戏类中的代码,其中包含渲染、初始化和更新等方法,但我认为解决此问题所需的唯一代码是渲染方法和变量,因此它们在这里(如果需要完整代码)请告诉我)

变量
 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();
}}}

如果您能花时间帮助我并回答我的问题,我很抱歉这个帖子太长了,我将不胜感激。

谢谢。

最佳答案

正如我所说,矩形(障碍物)正在移动,因为绘图坐标是相对于屏幕而不是游戏 map 定义的。那就是当角色移动并且您重新绘制游戏 map 时,矩形仍然绘制在 (0,0) 处,即屏幕的左上角。

这里有一些建议。

  • 使用单独的屏幕外 Image为游戏 map 。图像大小将为
    与游戏 map 大小相同。
  • 通过使用 getGraphics 获取此图像的图形上下文,应在此图像上绘制矩形(障碍物)和其他不包括字符的内容。
  • 最后,当角色移动时,您可以使用 drawImage(Image img, int dstx1, int dsty1, int dstx2, int dsty2, int srcx1, int srcy1, int srcx2, int srcy2, ImageObserver observer) 在屏幕上绘制图像的一部分方法。此方法的解释可用 here .您必须从字符
  • 的位置计算要绘制图像的哪一部分

    需要记住的是角色只能在屏幕上绘制,而不是在游戏 map 上 Image .绘制游戏 map 图像后,应在屏幕上绘制角色。

    关于Java游戏,背景的矩形正在移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084094/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com