ERROR in the colision


i made the colision teste in my game, but is identified colision when the models are still distant…

my code:

           public boolean colision (Node Modelo)
        CollisionResults results = new TriangleCollisionResults();
        for (int i=0;i<node.getChildren().size();i++)
            if ( ! Modelo.getName().equalsIgnoreCase(node.getChild(i).getName()) )
                Modelo.findCollisions(node.getChild(i), results);
                if (results.getNumber() > 0);
                    return true;

        return false;


whats the problem?

Is this part of code doing what you want ?

                if (results.getNumber() > 0);
                    return true;

No, this “;” I accidentally put in the code …

There is no syntax error in my code … my problem is that my function accuses collision between objects just before the objects collide … I put a picture of what is happening:

This message box appears when my function returns true …

The collision is based on the BoundingVolume of your spatial. If it is a sphere, it is probably bigger  than the box itself…

I changed to BoundingBox and still the same error …

s = new Box("s",new Vector3f(0,0,0), 5,5,5);

        BoundingVolume b = new BoundingBox();
        s.setModelBound( b);

   s2 = new Box("s2",new Vector3f(0,0,0), 5,5,5);

I have to give volume for boudingBox? What do I do?

Are you using SimpleGame? If yes you can show the BoundingVolumes by pressing B.

I think your problem is that getNumber() will not help you here. As far as I know you have to check if there are really triangle-hits

add something like this before returning true:

      for (int i=0;i<results.getNumber();i++)
         if (results.getCollisionData(i).getTargetTris().size()>0)
            return true;

Maybe you should use a different approach:

if (b1.hasCollision(b2, true)) return true;

the "true" in the hasCollision-method means trianglecollision yes/no

good luck...collision-detection is able to make you crazy (I'm having some issues at the moment as well)


I used the first way you said and it worked perfectly!

thank you very much!