我正在開發一個java項目; 「汽車遊戲」,我想檢測汽車和任何物體(「節點」)之間的碰撞;如道路上的錐體。如何檢測jMonkey中2個節點之間的交集
與本教程相似; http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_picking
本教程演示如何找到光線與附有框的節點之間的交集。我想用汽車底盤替換光線進行交叉點檢測。
我正在開發一個java項目; 「汽車遊戲」,我想檢測汽車和任何物體(「節點」)之間的碰撞;如道路上的錐體。如何檢測jMonkey中2個節點之間的交集
與本教程相似; http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_picking
本教程演示如何找到光線與附有框的節點之間的交集。我想用汽車底盤替換光線進行交叉點檢測。
假設您有兩個可碰撞物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
希望這有助於。
他們沒有告訴你的是,你可以使用getWorldBound獲得空間的正確邊界框。本教程介紹了關於setBound的一些東西,但這不起作用,因爲變換不適用於新的邊界,所以它將在0,0,0處縮放爲一個無旋轉的樣子。使用getWorldBound來設置一個新的並更新它。 我花了太長時間才弄明白 – 2014-06-29 14:59:46
@JappieKerk我試圖找到一種方法來產生物理對象的方式,他們沒有放在其他對象上;我想在啓用新物理之前檢查是否存在對象;我想getWorldBound()可能會訣竅? – 2014-12-24 15:55:13