dgnsparta

Üye
18 Nis 2022
52
-1
6
Belirtilmemiş
Merhaba. 

Oyunda herhangi bir yere triggerbox koydum ve karakterim bu triggerbox'ın içine girdiğinde seçtiğim npc'lerin tetiklenip bu triggerbox'a gelmelerini istiyorum. 

3 adet NPC'em var ve hepsinin davranış ağaçlarını wait-moveto tarzı standart oluşturdum. Ancak triggerbox'a girdiğimde NPC'leri o alana çağıramıyorum. Yani ben dünya üzerinde oluşturduğum bir triggerbox'a girdiğimde diğer NPC'lerin tetiklenip hemen oraya gitmelerini istiyorum. Ufak bir fikir verebilir misiniz? 

Open Level Blueprint ve ardından aşağıdaki görsel. Aşağıda tek bir NPC'nin davranış ağacı var. Bunu diğer 2 NPC'de de aynı şekilde etkilensin istiyorum. Umarım anlatabilmişimdir  :s (Ya da başka bir yöntem tavsiye ederseniz onu da denemek isterim).

32lwwpn.png
 
Yeni bir BP oluştur içine bir BoxComponent koy. Bu BoxComponent ta çarpıldığında level deki NPC leri toplamasını sağla (GetAllActorsofClass) ve Behavour tree lerindeki Move To location larını Bu "TriggerBP" nin lokasyonu olarak güncelle. Burada Level BP nin kullanılmasını gerektirecek bir durum yok.
 
Cevap için çok teşekkürler. Hemen deneyeceğim.


Bu fikir için çok teşekkür ederim.

Acemi olduğum için dediğinizi tam olarak yapamadım ancak verdiğiniz fikri başka bir şekilde gerçekleştirebildim. 

Bi tane triggerbox koydum. Daha sonra NPC'lerin BP'lerine girip "On Actor Begin Overlap" komutunu ekledim. Sonrasında NPC'lerin hedef konumlarını triggerbox olarak ayarladım. Ve çalıştı. Şu an ben triggerbox'ın içine girdiğimde NPC'ler geliyor. 

Şu andaki sıkıntım ise hepsinin aynı anda gelmesi :D. Davranış ağaçları ile gelmelerini zamanlayabilirim ama çok başarılı olmaz. İstediğim şey bir NPC geldikten ve gittikten sonra (boxcollission'dan ayrildiktan sonra gitmesi yönünde ayarlama yaptım. ben boxcollision'dan ayrıldığımda NPC başka bir targete yöneiliyor)  NPC'nin gittiğini anlayan diğer NPC'nin aynı targete gitmesi. 

Bu söylediklerim size şaka gibi gelebilir. Ama yalnızca acemilik inanın. Öğrenmeye ve yapmaya çalışıyorum.
 
Açık konuşmak gerekirse "Getallactorsclass" ı kullanmadım -ki zaten nasıl kullanabileceğime dair bi fikrim yoktu. 

Benim amatörce yaptığım (NPC'lerin tek tek Blueprintlerine girip oradan trigger'e yönlendirmek -davranış ağacını da kullanarak-) şekilde NPC'ler karakterim trigger'e girdiğimde bunu anlayıp hemen istediğim hedefe yöneliyorlar. Bu gayet iyi çalışıyor gibi gözüküyor. 

Ancak şu an sıra sıra olayına takılmış vaziyetteyim. Hepsinin aynı anda gelmesi işime gelmiyor. Bir NPC gelecek, diyalog kuracağım ya da görev verip alacağım, daha sonra onu göndereceğim (buraya kadar bir sorunum yok): sonrasında onun gittiğini anlayan diğer NPC gelecek. Sonra o gidecek, gittiğinde diğeri gelecek sonra diğeri. 

Üstelik ötekilerin gelmesi için sürekli trigger'e girmeme de gerek kalmayacak. Bir kere girmemle döngü başlamalı. Cevabı bulursam ve "benim gibi acemi birisi öğrenmek isterse" ayrıntılı açıklayacağım. Ama yardımlara hala açığım.
 
Normalde %99 durumda GetAllActorsofClass kullanılması gerekmez zaten. Acemi sorusu olduğu için kullanın dedim. Ama bu soruya nasıl cevap verilir bilmiyorum. Çünkü bu soru bir lise öğrencisinin " Bu villanın mimari çizimini nasıl yaparım " demesine benziyor. İnsan ne anlatacağını nereden başlayacağını bilemiyor. 
Bence en güzel cevap şu: Önce temel sistemleri kavrayın. Genel mantığı anladığınız da aradığınız çözümleri kendinizde bulabiliyor olacaksınız. Başkaları burada anlatsa ve istediğiniz sistemi kurabilseniz de konuyu tam anlamamış olacaksınız.
 
Blueprint bir derya. Yani öğrenmek gereken o kadar çok şey var ki. Bu işe girmeden önce internette blueprintin yetersiz olduğunu okumuştum. Ancak şu an Blueprintle neredeyse her şeyin yapılabileceğini görüyorum. 

Geçtiğimiz hafta steam üzerinden bir oyun çıkardım. Tabi ki bir dolu hata ile. Elbette bu oyunu yaparken bir engelli gibiydim. Ancak en nihayetinde başardım. Yine de temel kavramlarda hala sıkıntılarım var. Bilmediğim en basit şeyler ve çok fazla şey var. Aşmaya çalışıyorum. Mesela siz "Getallactorsclass" deyince hemen bu konuyu araştırdım ve mantığını anladım. Nasıl ve nerde kullanabileceğimi pratik yoldan çözdüm. Oyun yaparken açık konuşayım ticari kaygılarım oluyor. Dolayısıyla bazen mantığını öğrenmeden hazıra konmak istiyorum. Bunun da sebebi özel sektöre geri dönüp tekrar öğretmenlik yapmak istemememden kaynalı  :).

İlk oyunumdan şu an için pek bir şey kazanmadım. Zaten tanıtım da yapmadım. Ama hem ilk oyunu düzeltmek hem de 2.oyunumu daha sağlam geliştirmek istiyorum. Bu nedenle de en ufak bir cevap bile benim için çok şey ifade ediyor. O sebeple size müteşekkirim. Çünkü o fikri vermiş olmasaydınız ve trigger gibi basit bir detayı kullanmayı aklıma getiremeyecektim. 

Bu tarz forumlar çok değerli. Yabancı bazı forumlarda benzeri soruları sorduğumda benimle çok fazla alay etmişlerdi. Haklılar da. Ama dalga geçtikleri zaman bile söylediklerinden bir şeyler edinip ucundan kıyısından cevabı yakalıyorum  :). 

Ev alma konusunu sormuştum. Bir karakter nasıl ev alabilir diye. Tabi kimse cevap vermemişti. Sonra aklıma anahtar geldi. Emlakçıdan anahtarı satın alsın ve kapıya geldiğinde anahtar o kapıyı açsın. Hop al sana ev :D.  Bunun gibi çözümlerle bir oyun yapabildim. Umarım daha da geliştirebilirim ama temel mantığı öğrenmeye hala devam ediyorum ve biliyorum ki 10 yıl sonra da hala öğrenmeye devam edeceğim.