collsion issues with quadtree [on hold]
- by QuantumGamer
So i implemented a Quad tree in Java for my 2D game and everything works fine except for when i run my collision detection algorithm, which checks if a object has hit another object and which side it hit.My problem is 80% of the time the collision algorithm works but sometimes the objects just go through each other. Here is my method:
private void checkBulletCollision(ArrayList object) {
quad.clear(); // quad is the quadtree object
for(int i=0; i < object.size();i++){
if(object.get(i).getId() == ObjectId.Bullet) // inserts the object into quadtree
quad.insert((Bullet)object.get(i));
}
ArrayList<GameObject> returnObjects = new ArrayList<>(); // Uses Quadtree to determine to calculate how many
// other bullets it can collide with
for(int i=0; i < object.size(); i++){
returnObjects.clear();
if(object.get(i).getId() == ObjectId.Bullet){
quad.retrieve(returnObjects, object.get(i).getBoundsAll());
for(int k=0; k < returnObjects.size(); k++){
Bullet bullet = (Bullet) returnObjects.get(k);
if(getBoundsTop().intersects(bullet.getBoundsBottom())){
vy = speed;
bullet.vy = -speed;
}
if(getBoundsBottom().intersects(bullet.getBoundsTop())){
vy = -speed;
bullet.vy = speed;
}
if(getBoundsLeft().intersects(bullet.getBoundsRight())){
vx =speed;
bullet.vx = -speed;
}
if(getBoundsRight().intersects(bullet.getBoundsLeft())){
vx = -speed;
bullet.vx = speed;
}
}
}
}
}
Any help would be appreciated. Thanks in advance.