如何检测jMonkey中2个节点之间的交叉点

时间:2013-05-04 17:18:54

标签: jmonkeyengine

我正在研究一个java项目; “汽车游戏”,我想检测汽车和任何物体之间的碰撞(“节点”);比如路上的锥体。

与本教程类似; http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_picking

本教程显示了找到光线与附有框的节点之间的交集。我想用汽车底盘替换光线进行交叉检测。

1 个答案:

答案 0 :(得分:1)

假设您有两个可碰撞的a和b,并希望检测它们之间的碰撞。碰撞方可以是几何图形,附加几何图形的节点(包括根节点),平面,四边形,线条或光线。一个重要的限制是您只能碰撞几何与边界体积或光线。 (这意味着例如a必须是Type Node或Geometry,分别是Type BoundingBox,BoundingSphere或Ray。)

com.jme3.collision.Collidable接口声明了一个方法,该方法返回两个Collidables之间发现的碰撞次数:collideWith(Collidable other,CollisionResults results)。

代码示例:

// Calculate detection results
  CollisionResults results = new CollisionResults();
  a.collideWith(b, results);
  System.out.println("Number of Collisions between" + 
      a.getName()+ " and " + b.getName() + ": " + results.size());
  // Use the results
  if (results.size() > 0) {
    // how to react when a collision was detected
    CollisionResult closest  = results.getClosestCollision();
    System.out.println("What was hit? " + closest.getGeometry().getName() );
    System.out.println("Where was it hit? " + closest.getContactPoint() );
    System.out.println("Distance? " + closest.getDistance() );
  } else {
    // how to react when no collision occured
  }
}

我认为您还需要阅读本教程

http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:collision_and_intersection

希望这有帮助。