Так что я просто делаю 2d игру в свое свободное время, и мне трудно понять, почему мой код столкновения ломается после прыжка моего персонажа, но работает, когда мой персонаж прыгает.
Соответствующий код изосновной класс
public void collision() {
Rectangle body = jan.getBody();
int bodyX = (int) body.getX();
int bodyY = (int) body.getY();
if (bodyX < 0) {
body.setLocation(0, bodyY);
jan.setBody(body);
}
if (bodyX > 780) {
body.setLocation(780, bodyY);
jan.setBody(body);
}
if (bodyY > 360) {
body.setLocation(bodyX, 360);
jan.setBody(body);
}
}
public void actionPerformed(ActionEvent e) {
jan.update();
collision();
repaint();
}
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_LEFT) {
jan.setDirection(-1);
} else if (keyCode == KeyEvent.VK_RIGHT) {
jan.setDirection(1);
} else if (keyCode == KeyEvent.VK_SPACE) {
jan.jump();
}
}
Соответствующий код из класса игрока
public void jump() {
int y = (int) body.getY();
if (y == 360) {
body.translate(0, -15);
yVelocity = 15;
}
}
public void update() {
int x = getDirection();
if (x == 1) {
if (xVelocity < terminalVelocity) {
xVelocity++;
}
}
if (x == -1) {
if (xVelocity > -terminalVelocity) {
xVelocity--;
}
}
if (x == 0) {
if (xVelocity < 0) {
xVelocity++;
} else if (xVelocity > 0) {
xVelocity--;
}
}
if (body.y < 360) {
yVelocity--;
}
body.translate(xVelocity, -yVelocity);
}
Какие-либо причины, по которым мой код ломается после прыжка моего персонажа?