Game Maker Düşman Canı Sorunu
UstaDerslik Soru-Cevap Yararlı Araçlar
arama ikon
Diller
Türkçe Türkçe

bilgi UstaDerslik
Bu uyari kutusudur.
Tamam

Anasayfa
İletişim
Üyeler

Game Maker Düşman Canı Sorunu

Paylaş  :
profil
intelligence
GÖRÜNTÜLENME(428)
RAPOR ET
Merhaba. Ben bir düşman objesi yaptım ve adını obj_dusman1 koydum.
Düşmanın canının düşmanın altında gözükmesini istiyordum. obj_dusman1'in create eventine:
can=100

yazdım.
Mermi ile çarpışınca canı 10 azalıyor. obj_degisken objemin draw eventine:
if instance_exists(obj_dusman1) {
draw_text(obj_dusman1.x,obj_dusman1.y+32,string(obj_dusman1.can))
}

yazdım.
obj_dusman1'in canı 0 ya da küçük olduğunda obje yok oluyor.
Ama iki düşman koyup denediğimde düşmanlardan birinin altında canı yazıyor diğerinin altında yazmıyor. Canları ikisinin de normal, birinin canı yazmasa da örneğin 4 mermide yok olması lazımsa 4 mermide yok oluyor. Canı yazan düşmanı öldürdüğümüzde bu kez diğer düşmanın altında can yazıyor. Canı yazmadığı zaman bile mermiye dokunduysa o zaman örneğin canı 60 yazıyor. Kısacası ben ikisinin de canının altında yazmasını istiyorum. Bu kodlarda hatam varsa nasıl düzeltebilirim ya da bunu nasıl yapabilirim?




cArleone
cArleone 2 Yıl Önce Cevaplandı
2 hatan var.İlki bir objede draw komutu kullandığında o objenin spritesi yok olur.O yüzden spriteyi draw_sprite komuıtu ile çizdirmen gerek.
İkinci hatan obj_dusman1.x diye erişmen.Aynı odada benzer birden çok obje var ise obj_dusman1.x diye erişmeye çalışırsan sürekli o odaya konan ilk obj_dusman1 objesine erişir.diğerlerine erişemezsin.her objenin kend, x ve y si vardır.direk onları yazarak çizdir.

kısaca şu şekilde yap
if instance_exists(obj_dusman1) {
draw_sprite(obj_dusman1_sprite_ismi, 0, x, y);
draw_text(x,y+32,string(obj_dusman1.can));
}
intelligence
intelligence 2 Yıl Önce Cevaplandı
Hocam dediklerinizi yaptım şu an iki düşmanın altında da canı yazıyor ama şimdi mermiye dokundukları zaman canları inmesi gerekirken inmiyor,gittikleri yöne bakması gerekirken bakmıyor,onlara belirli bir mesafe yaklaştığımda kovalaması gerekirken kovalamıyorlar. Bunu nedeni ne olabilir? Eğer kodlarda sıkıntı olduğunu düşünüyorsanız bunların yapılması için yazdığım kodları buraya yazabilirim. Ama önceden sorunsuz çalışıyorlardı, drawla spriteyi çizdirince bu sorun ortaya çıktı.
cArleone
cArleone 2 Yıl Önce Cevaplandı
Evet bu şekilde baya bir sorun çıkartabiliyor.şu şekilde yeni bir sistem yaptım.Yeni bir obje oluşturup drawına
for(i=0;i<instance_number(obj_dusman1);i+=1){
draw_text(instance_find(obj_dusman1,i).x,instance_find(obj_dusman1,i).y+30,instance_find(obj_dusman1,i).can)
}

bu şekilde odadaki obj_dusman1 kadar bir döngü oluşturup.instance_find ile tek tek hepsine erişip bilgilerini alıyoruz.sonra draw_text ile yazdırıyoruz.
intelligence
intelligence 2 Yıl Önce Cevaplandı
Hocam biraz fazla soru soruyorsam üzgünüm ama instance_find ne işe yarıyor ve instance_find'in parantezinin içine ne yazıyoruz? Teşekkür ederim artık bütün obj_dusman1'lerin altında canları yazıyor.
cArleone
cArleone 2 Yıl Önce Cevaplandı
odaya konan her objenin farklı idsi mevcut.objeler aynı olsa bile idleri farklıdır.instance_find ise odaya konan aynı objelerin idlerini bulmamıza yarıyor.ilk parametresi obje adı,ikincisi ise objenin sıra numarası.

örneğin aynı objeden odaya 5 tane koydun.ikinci parametreye 0 yazarsan ilk eklediğinin idsine,1 yazarsan ikinci eklediğinin idsine ... diye gider.

id ile de objeye erişip tüm verileri alabiliyoruz.
intelligence
intelligence 2 Yıl Önce Cevaplandı
Hocam çok teşekkür ederim, bana çok yardımcı oldunuz.



Kod
Kalın
Vurgu
Resim
Video
Url
CEVAPLA
Tüm Hakları Saklıdır. ©Arleone 2013-2014 UstaDerslik






Giriş
Şifremi Unuttum...
Şifre Talep
  Kuralları Kabul Ediyorum.
Kaydol