Java游戏 - 绘制建筑物的最简单方法

时间:2010-09-24 01:56:23

标签: java events user-interface rectangles

这是我第一次做Java GUI的事情,我有几个问题。我正在制作一个简单的横向滚动游戏 - 特别是计划出来。窗口将是800x800。

随着游戏滚动(每隔40像素左右),将会出现建筑物。我想我会制作一个900px的黑色矩形,然后在不同的像素高度设置它的副本(以改变新建筑物的高度)。然后矩形的底部将被自动剪裁。

(1)会有用吗?

在屋顶上方的天空中,我将有目标飞行,可以点击并击落点。我以为我会制作目标的ImageIcon,然后在屏幕上绘制它。但我认为很难跟踪目标坐标,然后获得鼠标点击坐标,然后检查它们是否匹配。

(2)有没有简单的方法来判断目标是否被点击击中(没有很多坐标和数学)?

还有从左到右在屋顶上滑冰的滑板运动员。我在想我会在他身后放一个隐藏的矩形,然后看看它是否与给定的矩形屋顶相交,以告诉他何时降落。但问题是他们不会相交,直到他进入屋顶。而且我希望他在屋顶之上。

我怎样才能知道滑板手刚好在屋顶上方(没有大量的坐标数学)?

1 个答案:

答案 0 :(得分:1)

  
    

随着游戏滚动(每隔40像素左右),将会出现建筑物。我想我会制作一个900px的黑色矩形,然后在不同的像素高度设置它的副本(以改变新建筑物的高度)。然后矩形的底部将被自动剪裁。

  

那没关系 - 底部会被剪掉。

  
    

在屋顶上方的天空中,我将有目标飞行,可以点击并击落点。我以为我会制作目标的ImageIcon,然后在屏幕上绘制它。但我认为很难跟踪目标坐标,然后获得鼠标点击坐标,然后检查它们是否匹配。

  

我想不出更简单的方法。检查矩形区域是否太难:

if(mouseX >= targetX && mouseX < targetX+targetWidth &&
        mouseY >= targetY && mouseY < targetY+targetHeight){
    // is a hit
}

为了更好地进行碰撞检测,您可以在目标精灵上使用遮罩颜色,这是隐藏的(如果您没有使用遮罩,则检查alpha是否为0)。如果在目标图像区域内的非遮罩像素上单击鼠标,则会有一个命中。用于检查鼠标事件查找MouseListener或MouseAdapter。

  
    

还有从左到右在屋顶上滑冰的滑板运动员。我在想我会在他身后放一个隐藏的矩形,然后看看它是否与给定的矩形屋顶相交,以告诉他何时降落。但问题是他们不会相交,直到他进入屋顶。而且我希望他在屋顶之上。

  

你不应该需要一个不可见的矩形。滑板手的图像应该有宽度和高度,你应该可以使用它。图像是从左上方绘制的,因此滑板手的底部是他绘制的Y位置加上图像高度。您希望阻止该值超出屋顶边界。