我正在努力让基本的交叉点与我正在开发的游戏一起工作,因此我需要定义他们的命中箱。但是,当使用g2d.draw(矩形)时,矩形相对于其更新的坐标不会移动。
int x = 100 ;
int y = 100 ;
int x2 = x + 100;
int y2 = y + 100;
Rectangle hitbox = new Rectangle(x,y,x2,y2) ;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
//Graphical loop start
g2d.draw(hitbox) ;
repaint() ;
//Graphical loop end
}
带有keylistener组件的游戏循环
public void run() {
while(running) {
//Player movement
if (left) {
if (x <= -225) {
x = 1440 ;
}
x = x - 2 ;
}
if (up) {
if(y <= -225) {
y = 900 ;
}
y = y - 2 ;
}
if (right) {
if (x >= 1416) {
x = -24 ;
}
x = x + 2;
}
if (down) {
if (y >= 900) {
y = -10 ;
}
y = y + 2 ;
}
//Player movement
//ball movement
if (cubey > y) {
cubey-- ;
}
if(cubey < y) {
cubey++ ;
}
if (cubex > x) {
cubex-- ;
}
if (cubex < x) {
cubex++ ;
}
答案 0 :(得分:1)
根据提供的代码,hitbox矩形与坐标更改之间没有任何关联。使用新的x,y更新矩形,然后重新绘制。
这样的事情:
public void run() {
while(running) {
//...
hitbox.setBounds(x,y,100,100);
}
}
即使你的程序流程如何运作也没有效率。