Domanda

Sto scrivendo il mio primo gioco Java e finora:

Ho realizzato un rettangolo che può camminare con WSAD e si affaccia sempre dove punta il mouse. Inoltre, se fai clic, spara proiettili in cui punta il mouse (e i proiettili ruotano per affrontare quella direzione). Ho anche fatto nemici che ti seguono e ruotano per affrontare il tuo personaggio. Il problema che sto riscontrando è che il rilevamento delle collisioni che ho scritto sta rilevando solo la collisione degli oggetti (carattere, nemici e proiettili) prima della loro rotazione (usando .interscts ()). Ciò significa che alcune parti dei loro corpi si sovrappongono quando disegnate.

Mi sono guardato intorno e non ho trovato soluzioni che ho capito o posso applicare alla mia situazione. Finora ho ruotato la mia griglia grafica2d per ciascuno degli oggetti, quindi in realtà non sono stati ruotati, appena attirati. C'è un modo in cui posso effettivamente ruotare le loro forme e quindi usare qualcosa come .Interscts ()?

Qualsiasi aiuto o suggerimenti è apprezzato.

Ecco cosa uso per vedere se si scontrino spostando sull'asse X:

public boolean detectCollisionX(int id, double xMove, double rectXco, double rectYco, int width, int height)
{
    boolean valid=true;
    //create the shape of the object that is moving.
    Rectangle enemyRectangleX=new Rectangle((int)(rectXco+xMove)-enemySpacing,(int)rectYco-enemySpacing,width+enemySpacing*2,height+enemySpacing*2);
    if (rectXco+xMove<0 || rectXco+xMove>(areaWidth-width))
    {
        valid=false;
    }
    if(enemyNumber>0)
    {
        for (int x=0; x<=enemyNumber; x++)
        {
            if (x!=id)
            {
                //enemies and other collidable objects will be stored in collisionObjects[x] as rectangles.
                if (enemyRectangleX.intersects(collisionObjects[x])==true)
                {
                    valid=false;
                }
            }
        }
    }
    return valid;
}

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top