Предположим, у вас есть два объекта столкновения a и b, и вы хотите обнаружить столкновения между ними. Сторонами столкновения могут быть геометрии, узлы с прикрепленными геометриями (включая корневой узел), плоскости, четырехугольники, линии или лучи. Важным ограничением является то, что вы можете сталкивать геометрию только с ограничивающими объемами или лучами. (Это означает, например, что a должен быть типа Node или Geometry, а b соответственно типа BoundingBox, BoundingSphere или Ray.)
Интерфейс com.jme3.collision.Collidable объявляет один метод, который возвращает количество столкновений, обнаруженных между двумя объектами Collidable: 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
Надеюсь это поможет.
person
V-Q-A NGUYEN
schedule
27.11.2013