두 개의 충돌 ID a와 b가 있고 이들 사이의 충돌을 감지하려고한다고 가정합니다. 충돌 파티는 Geometries, Geometries가 첨부 된 노드 (rootNode 포함), Planes, Quads, Lines 또는 Rays가 될 수 있습니다. 중요한 제한 사항은 형상과 경계 볼륨 또는 광선 만 충돌 할 수 있다는 것입니다. 예를 들어, a 유형 노드 또는 기하학 및 B 유형 BoundingBox, BoundingSphere 또는 Ray 유형이 있어야 함을 의미합니다.
인터페이스 com.jme3.collision.Collidable은 두 개의 충돌이 발생한 횟수를 반환하는 하나의 메소드를 선언합니다 두 개의 Collidables : collideWith (Collidable other, CollisionResults 결과).
코드 샘플 :
// 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
희망을 읽어도 필요가 있다고 생각합니다.
그들이 getWorldBound를 사용하면 공간의 적절한 경계 상자를 사용할 수 있다는 것을 알려주지 않습니다. 이 튜토리얼에서는 setBound에 관한 것이 있습니다 만, 변환이 새로운 바운드에 적용되지 않기 때문에 동작하지 않습니다. 따라서 0,0,0의 배율은 회전하지 않습니다. 새로운 것을 설정하고 업데이트하는 getWorldBound 인스턴스를 사용하십시오. 그걸 알아 내는데 너무 오래 걸렸습니다. –
@JappieKerk 다른 객체 위에 배치되지 않은 방식으로 물리 객체를 생성하는 방법을 찾으려고합니다. 새로운 하나의 물리학을 가능하게하기 전에 거기에 물체가 있는지 확인하고 싶습니다. getWorldBound()가 그 트릭을 할 수있을 것 같아요? –