Author Topic: collision detection  (Read 3772 times)

Offline manumoi

  • long
  • ***
  • Posts: 121
    • View Profile
    • http://www.iro.umontreal.ca/~blanchae
collision detection
« on: July 04, 2005, 11:49:13 pm »
Hello, i m having a problem with collision detection...
I create a terrain object with many triangles.

then i call this function

 public void setupTerrainOctreeAndCollision(){
   OcTree oc = new OcTree(terrain, 100, OcTree.MODE_OPTIMIZED);
   terrain.setOcTree(oc);
   oc.setCollisionUse(OcTree.COLLISION_USE);
   Config.collideOffset = 250;
   terrain.setCollisionMode(Object3D.COLLISION_CHECK_OTHERS);
terrain.setCollisionOptimization(Object3D.COLLISION_DETECTION_OPTIMIZED);
    }

After that i create an avatar with an md2 file

public void loadModel(){
   model=Loader.loadMD2(modelPath+"tris.md2", 0.5f);
   model.setCollisionMode(Object3D.COLLISION_CHECK_SELF);
   model.setCollisionOptimization(Object3D.COLLISION_DETECTION_OPTIMIZED);
...

In this configuration, collisions occur and my avatar can t go through walls... But the problem is it can go through others avatars... When i try to put:

model.setCollisionMode(Object3D.COLLISION_CHECK_OTHERS);

there is no more collision and i don t understand why

Do you have an idea ???


PS :

my forward method is :

// ELLIPSOID_RADIUS is defined as in the FPS example
 private void moveForward(){
   SimpleVector a = model.getZAxis();
   a.scalarMul(5f);
   a = model.checkForCollisionEllipsoid(a,ELLIPSOID_RADIUS, 5);
   model.translate(a);
   animating=true;
    }


Tell me if you need something else to understand my code

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 12295
    • View Profile
    • http://www.jpct.net
collision detection
« Reply #1 on: July 05, 2005, 12:09:28 am »
Because your models should collide with others objects (models or the level) but each one should act as a collider itself to others, you have to use a combination of both modes on your model(s).
Try:

Code: [Select]
model.setCollisionMode(Object3D.COLLISION_CHECK_SELF|Object3D.COLLISION_CHECK_OTHERS);