Şu an Swing'i birincil çizim bileşenim olarak kullanarak bir 2D Java oyunu geliştiriyorum. Her nesnenin bir gölgesi (BufferedImage) vardır, ancak her gölge diğer gölgelerle örtüşür. Gölgelerin birbiriyle çakışmaması mümkün mü? Çünkü hala nesnenin altında ise gölgeler oyuncuyu çekmek istiyorum ve eğer nesne oyuncunun üzerinde değilse.Java oyunu Swing ile 2B örtüşen gölgeler
Ben alfa birleştirme baktım, ben Kaynak Out ihtiyacım tahmin: İşte netlik için bir resim mi? Ayrıca, tüm gölgelerin (saydamlık olmadan) tek bir katman üzerinde çizildiğini düşündüm ve sonra onu şeffaflık ile çizdim ama daha sonra oyuncu ve daha önce olduğu gibi başka nesneler üzerinde çizmeyecek.
Bir JPanel olan bir Draw nesnesine sahibim ve paintComponent yöntemini geçersiz kılar. Bu yöntemde o anki odanın zemini çiziyorum ve o anki odaya ait nesnelerin listesi üzerinde yineliyorum ve her bir nesneyi çizme yöntemini her şey için çiziyorum.
nesne beraberlik yöntemi:
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());
}
}
}
Özürlerimi bu soru zaten istendi ama böyle benzer bir şey bulamadık eğer.
Tüm gölgelerinizi tek bir katmana çizmek iyi bir fikirdir. Gölgelerinizin sonunu çizerseniz neden oyuncu ve nesneler üzerinde çizim yapmıyorlar? – eldo
Ancak gölgeler daha sonra "gölgeyi çeviren" nesnenin üzerine çizmez miydi? Gölgelerin sadece şu anda görülebilen parçalar olması durumunda, gölgeler kısmen nesnenin arkasındaysa –
Yoktur. Yani ağaçların gölgesi hiç ağacın üstünü örtmez. – eldo