L'altra risposta è fondamentalmente corretta; tuttavia, ho avuto alcuni problemi con il posizionamento dei poligoni usando quel metodo. Solo alcuni chiarimenti:
LibGDX non supporta i rettangoli ruotati quando si utilizza l'Intersector per la verifica della collisione. Se avete bisogno di rettangoli ruotati, dovreste usare lo Polygon per il rilevamento delle collisioni.
Costruire un poligono rettangolare:
polygon = new Polygon(new float[]{0,0,bounds.width,0,bounds.width,bounds.height,0,bounds.height});
Non dimenticare di impostare l'origine del poligono, se avete intenzione di ruotarlo:
polygon.setOrigin(bounds.width/2, bounds.height/2);
Ora si può ruotare il poligono di collisione:
polygon.setRotation(degrees);
Inoltre, da qualche parte nel codice, è probabile che si desideri aggiornare la posizione del collisione poligonale per abbinare il vostro sprite:
polygon.setPosition(x, y);
Possiamo anche disegnare il nostro poligono sullo schermo (per scopi di debug):
drawDebug(ShapeRenderer shapeRenderer) {
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.polygon(polygon.getTransformedVertices());
shapeRenderer.end();
}
Collision Detection:
I overlapConvexPolygons() del Intersector:
boolean collision = Intersector.overlapConvexPolygons(polygon1, polygon2)
Come menzionato nell'altra risposta, questo metodo solo w Orchi se:
- utilizzando poligoni convessi, che il rettangolo è
- eseguire poligono per poligono controlli, ad es .: non è possibile mescolare rettangoli e poligoni
Hai provato a usare Box2D? – razzledazzle
Ciao, puoi implementare una tua classe Rect o ... Non so esattamente come hai fatto la rotazione. Ma puoi usare le matrici di rotazione e di traduzione in modo che la collisione possa essere elaborata come se il tuo sprite fosse ancora a 0 gradi e usare il normale rect –
No, non ho ancora provato Box2d, puoi darmi un esempio del codice? scusa sono nuovo allo sviluppo di java e giochi –