Pygame nasıl hasar efekti yaparım ?[Yardım]

Arkadaşlar Pygame ile platformer oyun geliştiriyorum ama bir türlü yapamadım şu hasar efektini lütfen yardım edin bana.

Merhaba. Hasar efektinde yapmak istediğiniz farklı resimlerin ard arda gelmesi ile oluşacak bir animasyon anladığım kadarı ile. Eğer doğru anladıysam bu resimleri animasyon anında görünme sırası ile bir liste haline getirip şu örnek kodu kendinize uygun hale getirebilirsiniz:

from timeit import default_timer as timer
liste = [resim1,resim2] # resimlerinizi buraya ekleyeceksiniz
animasyon = False # efekt başlayacağı zaman bunu True yapacaksınız
animasyon_başladı = False # efekt başladında bunu da True yapacaksınız
aralık = 0.2 # animasyon çalışırken resimlerinizin kaç saniye ara ile değişeceği

while True: # ana döngünüz
    
    if animasyon:
        if animasyon_başladı:
            başlangıç = timer()
            animasyon_başladı = False
        try:
            ekran.blit(liste[int(timer()-başlangıç//aralık)],(x,y)) # siz burada sadece
            #ekran yerine kendi değişkeninizi koyup x ve y değerini değiştireceksizin
        except IndexError:
            animasyon = False

Ayrıca lütfen bir sonraki sorunuzu daha açıklayıcı bir şekilde anlatın, kullandığınız kodu da mümkünse sorunuza ekleyin. Kendinizi başkasının yerine koyup sorunuzun bu halini okursanız hiçbir şey anlaşılmadığını görebilirsiniz.

Pygame’de hasar efekti diye bir sey yok.

Bildigim kadariyla oyun literaturunde de spesifik bir efekt manasina gelmiyor.

Kodda ufak bir hata var.

ekran.blit(liste[int(timer()-başlangıç//aralık)],(x,y))

kısmı şu şekilde olmalı:

ekran.blit(liste[int((timer()-başlangıç)//aralık)],(x,y))

Parantezler işlem önceliğini değiştirdiği için sorun çıkıyordu.

Arkadaşlar efekt red vignette effect die gecer
Karakter hasar aldiktan sonar fill metodu ile boyanmasi Ama ben yapamdim

Boyanma şekli tam olarak nasıl olacak? Halen çok faydalı bilgiler vermiyorsunuz. Mesela köşelerden ortaya doğru olacaksa bunun için pygame.draw.rect fonksiyonu kullanılabilir.

Abi image.fill((255,255,255,50), special_flags=pg.blend_mult)
Bunu yapiyorum ama sonta eski haline dönmūo

Seni, yapmaya calistigin seyi, dusuncelerini, oyununu, kodunu tanimayan insanlarla duz yazi uzerinden iletistiginin farkindasin, degil mi?

Yapmaya calistigin efektin ne oldugunu anlatman 5 gun aldi. Kimsenin gormedigi bir koda calisan halini yazmamiz ne kadar surecek sence?

Arkadasin soyledigi en onemli sey konuyla alakasiz* kodun icinde kaybolmus olabilir. Olmamali; tamami sana ve senin okuman icin yazilmis bir cevap o:


*: Soru sormayi bilmeyen o kadar cok insanla karsilasiyoruz ki, bazilarimiz sorulmak isteneni tahmin edip en faydali olacagini dusundugumuz cevabi yaziyoruz. Vaktimizle risk aliyoruz ama bu cogu zaman onemli olmuyor, cunku alakasiz bir cevabi yazarken bile bir seyler ogreniyoruz.

Benim derdim aslen herhangi bir spesifik problemin cozumunden cok daha onemli olan soru sorabilme becerisini yayginlastirmak.

2 Likes

Aslında dediğiniz gibi yardım etmeye çalışmıştım ancak daha sonra gereksiz bir uğraşa girdiğimi fark ettim. Özellikle

bunu okuduktan sonra sorulamamış bir soruya neden cevap yazmaya çalıştığımı tekrar düşündüm. Dediğiniz gibi bazen cevap yazarken de yeni şeyler de öğrenebiliyoruz. Eğer normalde yazılmaması gereken bu

cevabı yazmasaydım bu soru ile hiç ilgilenmeyecek ve de şu konuyu açmayacaktım: Pygame Animasyon Oluşturma

Haklısınız, gerçekten de önemli bir beceri. Aslında tek yapılması gereken önemli olan ayrıntıların tamamını vermek, soruyu konu bakımından olabildiğince özelleştirmek,
ama gereksiz yere de uzatmamak.

Eski haline nasıl döndürmeyi düşünüyorsunuz? Belki de eski halini bir değişkene atarsınız?
Bir dahakine denediğiniz yöntemleri de sonradan yazmak yerine sorunuza en başta ekleyin.
Ayrıca pygame de blend_mult diye bir değişken bulunmamaktadır. BLEND_MULT değişkeni vardır. Kodlarınızı tam olarak doğru yazın ki birisi denemeye kalktığında hata almasın.

kardeşim benim istediğim https://www.youtube.com/watch?v=0ctJV0EPbuc&t=13s
ama yapamıyorum

birde eğer tam kodu atsam tüm sayfayı kaplar

Madem elinizin altında bir örnek var niçin yapamıyorsunuz? Ayrıca yolladığınız linkte ileri seviye sayılabilecek yazılım konseptleri kullanılmış. Oradaki next fonksiyonunun ne işe yaradığını bilmiyorsanız ilk önce onları öğrenmeli, daha sonra videoyu takip etmelisiniz.

Attığınız linkte tam olarak bu yapılıyor.

Next fonksiyonunu biliyoum Ve ayrica aynilarini kenDi koduma ayarladim ama calismadi

Demek ki bir yerde hata yapmışsınız. Kodu atmıyorsunuz ve de çalışmadığını söylüyorsunuz. Bizim bu şekilde size yardım etmemiz olanaksız.

sağolun genede denediniz sorunumu çözmek için olsun,değerli vaktinizi çaldığım için özür dilerim iyi günler.

Peki nedir son durum? Sorununuzu çözebildiniz mi? Kodları paylaşmayı düşünürseniz belki arkadaşlar daha rahat yardımcı olabilirler.

1 Like

Duzenli olarak MB’lari bulan codebase’lerle calisan biri olarak, sorun olmayacagini soyleyebilirim.

Ama yine de dogru usulu ogretmek acisindan: http://www.sscce.org/


Gordum, cok iyi :wink:

1 Like

kodlarım 3 python dosyasından oluşuyor ve bir tanesini atmam yetmez