2013-05-04 92 views

回答

1

假設您有兩個可碰撞物a和b並且想要檢測它們之間的碰撞。碰撞方可以是幾何圖形,附有幾何圖形的節點(包括根節點),平面,四邊形,線條或光線。一個重要的限制是你只能碰撞幾何體與邊界體或射線。 (這意味着例如a必須是類型節點或類型邊界框,BoundingSphere或Ray的b和b)。

接口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

希望這有助於。

+1

他們沒有告訴你的是,你可以使用getWorldBound獲得空間的正確邊界框。本教程介紹了關於setBound的一些東西,但這不起作用,因爲變換不適用於新的邊界,所以它將在0,0,0處縮放爲一個無旋轉的樣子。使用getWorldBound來設置一個新的並更新它。 我花了太長時間才弄明白 – 2014-06-29 14:59:46

+0

@JappieKerk我試圖找到一種方法來產生物理對象的方式,他們沒有放在其他對象上;我想在啓用新物理之前檢查是否存在對象;我想getWorldBound()可能會訣竅? – 2014-12-24 15:55:13