कैसे आप कम अपारदर्शिता के साथ Pygame में ब्लिट / ब्लिट करते हैं? [डुप्लिकेट]
मैं एक खेल में कुछ कोहरे को उड़ाने की कोशिश कर रहा हूं, लेकिन मैं एक समस्या में भाग गया हूं, जहां मुझे एहसास हुआ है कि कोहरा बहुत अधिक है। मैं इसे और भी कम अपारदर्शिता के साथ ब्लिट करना चाहता हूं, लेकिन मुझे यह भी पता नहीं है कि मैंने कैसे और जिन ट्यूटोरियल को ऑनलाइन पाया है, वे काम नहीं करते हैं / पहले से ही आपसे यह जानने की उम्मीद करते हैं कि कैसे।
बस मामले में आप सोच रहे हैं कि कोड कैसे लिखा जाता है:
screen.blit(fog, (0, 0))
संपादित करें: मैं केवल मामले में पायथन 3.8 का उपयोग कर रहा हूं
संपादित करें संस्करण: मैं Pygame 2.0.0 का उपयोग कर रहा हूं, बस उस मामले में भी जो मायने रखता है
जवाब
आप कम अपारदर्शिता पर नहीं फटकते हैं, आप एक ऐसी सतह को फोड़ देते हैं जिसमें कम अपारदर्शिता होती है।
surface.set_alpha()
धूमिल होने से पहले कोहरे की अस्पष्टता को बदलने के लिए उपयोग करें ।
डॉक्स: https://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_alpha
इसके अलावा, यदि आप एक छवि से अपने कोहरे में लोड कर रहे हैं, तो surface.convert_alpha()
उस पर उपयोग करना सुनिश्चित करें , अन्यथा यह छवि प्रारूप में पारदर्शिता को पंजीकृत नहीं करेगा।
blit()वास्तव में एक मिश्रित सतह लक्ष्य पर सतह , का अल्फ़ा चैनल पर निर्भर सतह । आपको बस इतना करना है कि अल्फा चैनल को बदलना है fog
। set_alpha()पूर्ण सतह छवि के लिए अल्फा मान सेट करने के लिए उपयोग करें :
भूतल के लिए वर्तमान अल्फा मान सेट करें। इस सरफेस को एक गंतव्य पर ब्लिट करते समय, पिक्सल को थोड़ा पारदर्शी बनाया जाएगा। अल्फा मान 0 से 255 तक पूर्णांक है, 0 पूरी तरह से पारदर्शी है और 255 पूरी तरह से अपारदर्शी है।
यदि आप 50% पारदर्शी कोहरा लागू करना चाहते हैं:
fog.set_alpha(127)
screen.blit(fog, (0, 0))