omer.hatay

Üye
2 May 2019
182
14
18
26
(34) İstanbul Avrupa
Hocalarım şimdi 
Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.
 bu videoda gördüğünüz gibi niagara ile çok güzel bir sistem oluşturdum. Videoda ne dediğimi anlamadıysanız bir de burada anlatayım. Partiküller çarpışmaları gereken collisionların dışında yaratılınca ve kendi yollarında ilerlerken bu collision ile karşılaşırlarsa sıkıntı yok, istediğim her şey gerçekleşiyor. Fakat, partiküllerin yaratıldıkları konum collisionın içiyse, o zaman herhangi bir çarpışma gerçekleşmiyor ve partiküller yollarına olduğu gibi devam ediyor. Karakterimiz partiküllerin çarpması gereken collisionların içinden geçebiliyor. Oyunun mekaniği gereği karakterimiz bu collisionları blocklamıyor. Niagarada istediğim formasyonda istediğim kadar mermi oluşturup ortamı mermi ile doldurmak istediğim bir oyun yapmak istiyorum fakat, niagaranın collision sistemi bana engel oluyor. Şimdi yarattığım her partikülün bir actor gibi davranmasını beklemiyorum fakat böyle bir hata da olmasa tadından yenmezdi.
 
Niagara da o kadar iyi olmadığım için çok yardımcı olamayabilirim ama spawn noktası collision içinde olduğu sürüce normal physics actor collision ları bile doğru çalışmaz. Yaklaşık 15 kadar program biliyorum hiç bir physics sistemi collision içerisinde spawnlanmaya başladığında güzel bir sonuç veremez. Dolayısı ile sorun orada değil.
    Mutlaka niagara içerisinde daha iyi bir çözüm de vardır ama benim aklıma gelen en basit yöntem VFX sistemi tutan aktörde (yani küp te) GetOverlappingActors le ya da onComponentBeginOverlap le ya da her hangi bir başka bir kontrolle o an bir şeye çarpıp çarpılmadığını kontrol edebilir ve bunu bir UserParameter ile Niagara sistemine aktarabilirsin tick te. Niagara sisteminde de buna göre Lifetime ı ya da spawn rate i değiştirerek çıkan particullerin hemen ölmesini ya da hemen patlamasını sağlayabilirsin. Ya da daha da basitinden actor begin overlap te niagara sistemini comple deaktive edebilir sonra tekrar aktive edebilirsin. Başka bir yolda yaptığın şekilde iç içe girmelerini actor seviyesinde engelleyebilirsin.
 
Bu sistem daha önce aklıma gelmişti ama nasıl yapacağım konusunda hiç fikrim yoktu çünkü o zamanlar niagaraya hakim değildim. Şimdi siz söyleyince tekrar deneyeyim dedim. Deneme amaçlı particleların yaratıldığı yere küçük bir collision ekleyip overlap olma durumuna göre niagaraya boolen değer gönderdim. Bu boolean değere göre particlelar yaratıldıkları gibi yok oluyorlar ve gerekli eventler yaratılıyor. Sanırım bu yöntemle ilerleyeceğim. Tek sıkıntı, bu particlelar aslında bir collision eventi oluşturmuyor. Normalde bu eventin oluşturulması ve bu eventle ilişkili olarak başka particlelar yaratılması gerekiyor. Çözüm olarak 
Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.
 bu videoyu izleyebilirsiniz. Eklemeyi unuttum, videoda görünen export particle data to blueprint modülünde de condition to export data değişkeninde de blueprint or operation kullanıp hem collision valid hem de iscolliding değişkenlerini bağladım. Diğer türlü iscolliding true olduğunda blueprintin çarpışmalardan haberi olmayacak. O değişikliği de yapmayı unutmasın bu sorunla karşılaşanlar. Çok sağolun hocam, ilham perimsiniz.
 
Mermilerin spawn edildiği noktadan forward vector'u yönünde line trace atıp içinde mi ya da önümde gibi kontrolleri yapabilirsin aslında. Tabi bu burda trace uzunluğunu ne kadar alacaksın sana kalmış.
 
Seninkiyle aynı . Çünkü duman collisionu var ve duvara çarpıyor geçmiyor yani hiçbir şekilde. Adam bunu materialler üzerinden kontrol ettirerek çözmüş. Material görünmez oluyor o kısımdan sonra herhalde. Hemen sildirme işlemide yapabilirsin başka yapabileceğin pek bir şey yok.
Ya da linetrace yap 5cm 10 cm gibi bir mesafe varsa ateş etmesin en basitinden. ya da karakterinin collisionunu büyüt duvarın içine girmesin.
 
leonscottkfm' Alıntı:
Seninkiyle aynı . Çünkü duman collisionu var ve duvara çarpıyor geçmiyor yani hiçbir şekilde. Adam bunu materialler üzerinden kontrol ettirerek çözmüş. Material görünmez oluyor o kısımdan sonra herhalde. Hemen sildirme işlemide yapabilirsin başka yapabileceğin pek bir şey yok.
Ya da linetrace yap 5cm 10 cm gibi bir mesafe varsa ateş etmesin en basitinden. ya da karakterinin collisionunu büyüt duvarın içine girmesin.

Aslında orada adam particle kullanıyor sağ taraftan görebilirsin. P_ParticleName li bir şey var. Orda material dediğin şey bi tane mask texture, onu da opacity için kullanıyor. Yani orada da bir particle system var. Niagara mı cascade mi orasını bilmiyorum ama.
 
İşte işin içine blueprint veya c++ kodlama girdiğinde, o zamanlamanın matematiği kafa karıştırmaya başlıyor. Niagara kullanmamın sebeplerinden biri de o zamanlama falan fistan her şeyi kendi içinde çözüyor. Zaten gerek yok uzatmaya, bir collision ile çözülüyor.


Senin gösterdiğin sistemde, particlerların duvarla bir etkileşimi yok hocam. Bir tane scene capture componentten gelen texture a göre partiküllerin yaratılacağı alan belirleniyor o alanda partiküller yaratılıyor. Yoksa partikül yaratılıyor, sonra duvara çarpınca yok oluyor gibi bir durum yok orda.