2
我已經創建了Polygon
對象來包裹我的飛機(飛機的尺寸TextureRegion
是256x74,但這個遊戲的大小是70x20)。所以:LibGDX - 正確使用Polygon類
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
函數不起作用!爲什麼?
你對碰撞結果做了什麼?你如何重新調整多邊形? –