Я новичок в LWJGL и нуждаюсь в помощи при обнаружении столкновений. Ниже я включил два класса Java, с которыми я работаю. Класс Ship.java рисует квадрат, а затем вы можете перемещать квадрат. В Enemy.java отображается красный квадрат.2D обнаружение столкновения LWJGL
Я хотел бы, чтобы корабль столкнулся с врагом. Я смущен тем, что делать.
Ship.java
package WallWars;
import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.input.Keyboard;
public class Ship {
double x;
double y;
double spdX;
double spdY;
double directionLeft;
Enemy enemy = new Enemy();
public Ship(){
x = 100;
y = 100;
}
public void ShipLogic(){
x += spdX;
y += spdY;
//Friction
if(!Keyboard.isKeyDown(Keyboard.KEY_LEFT) && spdX > 0){
spdX = spdX * 0.9;
}
if(!Keyboard.isKeyDown(Keyboard.KEY_RIGHT) && spdX < 0){
spdX = spdX * 0.9;
}
if(!Keyboard.isKeyDown(Keyboard.KEY_UP) && spdY < 0){
spdY = spdY * 0.85;
}
if(!Keyboard.isKeyDown(Keyboard.KEY_DOWN) && spdY > 0){
spdY = spdY * 0.85;
}
//Keyboard Input
if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
spdX = Math.max(-5, spdX - 1);
}
if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)){
spdX = Math.min(5, spdX + 1);
}
if(Keyboard.isKeyDown(Keyboard.KEY_UP)){
spdY = Math.max(4.5, spdY + 1);
}
if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)){
spdY = Math.min(-4.5, spdY - 1);
}
}
public void ShipCollisions(){
//Wall Collisions
if(x <= 0){
spdX = 0;
x = 0.1;
}
if(x >= 768){
spdX = 0;
x = 767.9;
}
if(y <= 0){
spdY = 0;
y = 0.1;
}
if(y >= 568){
spdY = 0;
y = 567.9;
}
}
public void EnemyCollisions(){
if(x > enemy.x + 60 + 32 && x < enemy.x){
}
}
public void dShip(){
ShipLogic();
ShipCollisions();
EnemyCollisions();
glBegin(GL_QUADS);
glColor3d(1, 1, 1);
glVertex2d(x, y);
glVertex2d(x + 32, y);
glVertex2d(x + 32, y + 32);
glVertex2d(x, y + 32);
glEnd();
}
}
Enemy.java
package WallWars;
import static org.lwjgl.opengl.GL11.*;
public class Enemy {
double x;
double y;
double posX = x;
double posY = y;
public void dEnemy(double x, double y){
glBegin(GL_QUADS);
glColor3d(1, 0, 0);
glVertex2d(x, y);
glVertex2d(x + 32, y);
glVertex2d(x + 32, y + 32);
glVertex2d(x, y + 32);
glEnd();
}
}