我想告訴兩個rectangles
是否碰撞。我沒有問題,如果矩形不旋轉,但我在我的邏輯有一些問題,當他們都旋轉。這裏是我的方法,我目前正在使用:兩個旋轉矩形之間的java碰撞檢測
public static void car_on_ai_collision(AI ai, Entity e){
//rotation of each rectangle in radians
double ai_rot = ai.getAIEntity().getRotation().y;
double car_rot = e.getRotation().y;
//stores the center point of the rectangles
Vector3f ai_loc = ai.getAIEntity().getLocation();
Vector3f car_loc = e.getLocation();
//here i am lining the square for my car up to a axis by making it have no rotation
ai_rot -= car_rot;
car_rot = 0;
//creating rectangles with the size of the car
Rectangle car = new Rectangle(175, 70);
Rectangle ai_rec = new Rectangle(175, 70);
car.translate((int) ((int) car_loc.x-87.5), (int) car_loc.z-35);
//rotation for rectangle
AffineTransform aiAT = new AffineTransform();
aiAT.translate((int) ai_loc.x - 87.5, (int) ai_loc.z-35);
aiAT.rotate(Math.toDegrees(ai_rot), ai_loc.x, ai_loc.z);
Area a = new Area(ai_rec);
a.transform(aiAT);
//testing for collision
if(a.getBounds2D().intersects(car)){
System.out.println("Collision!");
}
}
碰撞檢測似乎並沒有在任何地方接近是正確的,從我的理解軸的一個需要對齊。我試圖對齊一個軸,然後測試與AffineTransform
的碰撞,但我在網上看到有關旋轉超過90度的事情會導致一個問題。我如何解決這個問題來測試兩個旋轉矩形之間的碰撞?任何幫助表示讚賞。
你的意思是這樣[這](http://stackoverflow.com/questions/20927189/detecting-collision-of-two-sprites-that-can-rotate/20928531#20928531) – MadProgrammer
謝謝,一些修修補補後,我能夠使用像你的例子一樣的路徑找出它。我用upvote打你,不像你需要它:)。謝謝。 – Ryan
很高興它可以幫助;) – MadProgrammer