Attualmente sto sviluppando un gioco Java 2D utilizzando Swing come componente di disegno principale. Ogni oggetto ha un'ombra (BufferedImage) ma ogni ombra si sovrappone ad altre ombre. È possibile solo che le ombre non si sovrappongano l'una all'altra? Perché voglio ancora che le ombre attirino il giocatore se l'oggetto è sotto di esso, e non se l'oggetto è sopra il giocatore. Ecco una foto per chiarezza:Gioco Java Ombre sovrapposte 2D con Swing
Ho guardato canale alfa, Credo che ho bisogno Fonte Out? Ho anche pensato che tutte le ombre (senza trasparenza) si disegnassero su un livello e poi lo disegnassero con trasparenza, ma poi non disegnerà sopra il giocatore e altri oggetti come prima.
Ho un oggetto Draw che è un JPanel e sovrascrive il metodo paintComponent. All'interno di questo metodo disegno il pavimento della stanza corrente e quindi eseguo un'iterazione sull'elenco di oggetti che appartengono alla stanza corrente e chiamiamo il metodo di disegno di ogni oggetto per disegnare tutto.
Il metodo draw oggetto:
public void draw(Graphics g) {
if (visible && checkInScreen()) {
// The required drawing location
int drawLocationX = getX() - globalCameraX;
int drawLocationY = getY() - globalCameraY;
if (shadow) {
g.drawImage(shadowImages.get(imageIndex),
drawLocationX + shadowOffset.x + (getImageWidth()/2),
drawLocationY + shadowOffset.y, null);
}
g.drawImage(images.get(imageIndex), drawLocationX, drawLocationY, null);
//Collisionbox
if (SHOW_COLLISION_BOXES){
g.setColor(Color.WHITE);
g.drawRect(drawLocationX + getCollBoxX(), drawLocationY + getCollBoxY(), getCollBoxW() - getCollBoxX(), getCollBoxH() - getCollBoxY());
}
}
}
Le mie scuse se questa domanda è già stata posta, ma non riuscivo a trovare qualcosa di simile come questo.
Disegnare tutte le ombre su un livello è una buona idea. Se disegni le tue ombre per ultime, perché non attirano giocatori e oggetti? – eldo
Ma le ombre non disegnerebbero l'oggetto che "proietta l'ombra"? Perché le ombre sono parzialmente dietro l'oggetto –
No se le tue ombre sono solo parti che sono visibili in questo momento. Quindi un'ombra di alberi non coprirà mai l'albero stesso. – eldo