我正在尝试制作一个基本的自上而下的射击游戏,但在生成敌人时遇到了一些麻烦。我已经设法让产卵正常工作,但是当尝试添加一个碰撞矩形时,在初始化它时,它想要变成静态的,如果我把它变成静态的,那么它想要 X 和 Y 变成静态的,这不是一个选项。
我有一个代表可玩角色的播放器类,矩形在该类中工作正常,所以我认为它与类实例有关。
package com.space.shooter;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.geom.Rectangle;
public class Enemy extends Entity{
int carPosX;
float carPosY;
static Rectangle enemyCollisionBox;
static Image car;
Enemy(int x, int y) {
super(x, y);
carPosX = x;
carPosY = y;
}
static void init () throws SlickException{
car = new Image ("src/data/Car.png");
enemyCollisionBox = new Rectangle(carPosX, -36, car.getWidth(), car.getHeight());
}
boolean isDestroyed(){
if (carPosY > Engine.height){
return true;
}
return false;
}
static void spawn(int x) throws SlickException{
switch (x){
case (0):
x = Engine.width/2-40;
break;
case (1):
x = Engine.width/2-10;
break;
case (2):
x = Engine.width/2+20;
break;
}
Play.enemies.add(new Enemy(x, -36));
//System.out.println(Play.enemies.size());
init();
}
void update (GameContainer gc){
Input input = gc.getInput();
if (input.isKeyDown(Input.KEY_SPACE)){
carPosY += 6 + (1 * Play.level);
} else {
carPosY += 0.95 + (1 * Play.level); // was 0.95;
}
}
void render(GameContainer gc, Graphics g){
g.drawImage(car, carPosX, carPosY);
}
}
请不要太苛刻地判断我的代码,这是我第一次尝试一个完整的游戏,而且我出于绝望一直在添加代码,它变得有点混乱。在这篇文章中,我不得不在最后一刻对代码进行一些修改,所以它可能有点不正确。
我无法弄清楚矩形问题的解决方案是什么。
谢谢