飛行機を包むオブジェクトを作成しましPolygon
た (飛行機のサイズTextureRegion
は 256x74 ですが、ゲームでのこのサイズは 70x20 です)。そう:
TextureRegion[] texRegsAirplane = TextureRegion.split(textureAirplane, 256, 74);
Rectangle bounds = new Rectangle(0, 0, 70, 20);
Polygon polygon = new Polygon(new float[]{0,0,bounds.width,0,bounds.width,bounds.height,0,bounds.height,0,0});
その後、update
関数でその位置を更新します。
public void update(float delta){
Vector2 v = getPosition();
v.add(velocity);
polygon.setPosition(v.x, v.y);
}
次に、ポリゴンをレンダリングして、それがどこにあるかを確認します。
public void render(SpriteBatch spriteBatch, float pixelPerUnitX, float pixelPerUnitY){
spriteBatch.draw(testTexture,polygon.getX()*pixelPerUnitX, polygon.getY()*pixelPerUnitY,
polygon.getBoundingRectangle().width*pixelPerUnitX,polygon.getBoundingRectangle().height*pixelPerUnitY);
}
最後に、2 つの飛行機を作成し、それらを互いに飛行させ、反復ごとに以下のように衝突を検出しようとします。
public void detectCollision(){
for(Airplane airplane1 : Airplanes){
for(Airplane airplane2 : Airplanes){
if(Intersector.overlapConvexPolygons(airplane1.getPolygon(), airplane2.getPolygon())){
//COLLISION DON'T HAPPEN!!!
}
}
}
2 つの長方形が移動して交差しているのがわかりますが、overlapConvexPolygons
機能しません。なんで?