mforge

Aktif üye
26 Kas 2018
275
2
53
28
Elimdeki sistemde Character BP içerisinde Character Mesh in Hand kemigine bağli boş Skeletal Mesh var ve buna bağlı da Box Collision var. Yerden aldığım silahlar bu boş Skeletal Meshe yerlestiriliyor ve hasar Box Collision ile veriliyor. Ama ben hasarın, silahların Skeletal Meshlerindeki Complex Collisionu ile vermek istiyorum böyle bişey mümkün mü?. Aynı zamanda düsman karakterinin de hasarı body Physics ile almasını istiyorum.
Savaş mekaniğine gerçeklik katmasi ve sistemimdeki silahların uzunluk ve kısalık gibi değerlerinden dolayı bu gerekli.
Ne önerirsiniz?
 
1. Seninkine uyumlu -> yeni bir collision kanalı oluştur Project Settings-> Collision . Box collision yalnızca bu kanalı kullansın, skeletal meshlerin capsule companent lerde bu kanalı ignore et, character mesh üzerinde overlap aç. Yalnızca Karakter mesh e vurmuş olacaksın. Burada tehlikeli olan başka objelerin arkasındaki düşmanlara da vurursun, ayrıca box collision Generate overlap aç-kapa yapman gerekir yoksa boş koşarken bile damage vurursun.

2. Trace Logic : Silahların içine socketleri tanımla, anladığım kadarıyla kılıç kullanacaksın, kılıcın başlangıç ve bitiş noktalarına socketleri koy

Version 1 : Box collision collide olduğunda Actor leri toplayacağın TSet temizle, timer event tetikle, timer event boyunca silaha tanımladığın başlangıç ve bitiş noktaları arasında capsule trace çalıştır (Trace channel Visibility, Karakter capsule comp visibility collision channel kapa, character mesh aç, damage vurmak istediğin tüm actor türlerine bir Tag tanımla ), tüm tag sahibi actorleri TSet e ekle ve eğer daha önce damage vurmadıysan damage gönder. Overlap bitince timer durdur. Buradaki mantık duvarların arkasındaki düşmanlara damage vurmamak, yine box collision Generate overlap aç-kapa yapman gerekir yoksa boş koşarken bile damage vurursun.

Version 2 : Anim Notify oluştur, kılıç savurma hareketi boyunca anim notify tetikle, interface ile bunu pawn a yolla, yukarıdaki yöntem ile TSet temizle, capsule trace kullan, tüm Tag lı hedeflere damage vur, anim notify tamamlanınca event durur, timer aç kapa derdin olmaz duvar arkası düşmanları dert etmek zorunda kalmazsın.

Oyununun ihtiyaçlarına göre yukarıdaki yöntemlerden herhangi birini kullanabilirsin, fiziksel tepkiler için "Content Examples" içindeki "Animation Physics Control" inceleyebilirsin.
 
Eline sağlık üstad. Ama Kullandığım yöneteme devam etmeye karar verdim. Tabi set işleminde değişiklik yaparak silahların skeletal mesh ile degil de Child actor ile eklenmesini sağladım.
Bir Base Actor oluşturup icerisine box collision ekleyip bu actorden Childler ürettim. Ve bu childler ile silahları oluşturup yapısına göre de box collisonları kendi içinde düzenledim. Tag sistemini ve Collisionu acıp kapayacak anim notify sistemini de zaten kullanıyordum. Şu anki sistem daha temiz oldu.
Bana şu an sadece düşman karakterinin Hasarı capsule component ile değil de Body physics ile almasına sağlamam lazım. Ona uğraşıyorum.
Bu 1. Yazdığını da denemiştim ama dediğin gibi sürekli hasar veriyor çevreye boştayken. Açma kapama olayını tam olarak uygulayamadım. Any damage ile mi bağlantılı caliscak? Kafamda oluşturamadım orasını.
 
"Bana şu an sadece düşman karakterinin Hasarı capsule component ile değil de Body physics ile almasına sağlamam lazım. Ona uğraşıyorum." -> ilk dediğim geçerli yeni bir collision kanalı oluştur default : Ignore , Kanal herşeyi ignore edeceği için başka hiçbir objeyi dert etmek zorunda kalmazsın yalnız karakter mesh ler için bu kanalı overlap yap, Dediğin silah box component Object Type olarak bunu kullanacak, response olarak da herşey ignore yalnızca pawn overlap. İşin özünde iletişim yalnızca bu boz collision ve karakter mesh ler arasında kalacak anlayacağın.

"Bu 1. Yazdığını da denemiştim ama dediğin gibi sürekli hasar veriyor çevreye boştayken. Açma kapama olayını tam olarak uygulayamadım. Any damage ile mi bağlantılı caliscak? Kafamda oluşturamadım orasını." ->Madem animnotify kullanıyorsun zaten altyapın hazır, Notify içinde Override olarak, Received Notify Begin ve End var, bunları da karaktere göndereceksin, Begin ise silaha "Generate Overlap Events = true" End ise false, yani sadece notify aktif olduğu süre boyunca overlap çalışacak, harici zamanda damage vurmaz, burada yine dikkat etmen gereken kendine damage vurmamak, child kullanıyorsan ignore owner kuralına göre ayarlaman gerekir.
 
  • Beğen
Tepkiler: mforge
"Bana şu an sadece düşman karakterinin Hasarı capsule component ile değil de Body physics ile almasına sağlamam lazım. Ona uğraşıyorum." -> ilk dediğim geçerli yeni bir collision kanalı oluştur default : Ignore , Kanal herşeyi ignore edeceği için başka hiçbir objeyi dert etmek zorunda kalmazsın yalnız karakter mesh ler için bu kanalı overlap yap, Dediğin silah box component Object Type olarak bunu kullanacak, response olarak da herşey ignore yalnızca pawn overlap. İşin özünde iletişim yalnızca bu boz collision ve karakter mesh ler arasında kalacak anlayacağın.

"Bu 1. Yazdığını da denemiştim ama dediğin gibi sürekli hasar veriyor çevreye boştayken. Açma kapama olayını tam olarak uygulayamadım. Any damage ile mi bağlantılı caliscak? Kafamda oluşturamadım orasını." ->Madem animnotify kullanıyorsun zaten altyapın hazır, Notify içinde Override olarak, Received Notify Begin ve End var, bunları da karaktere göndereceksin, Begin ise silaha "Generate Overlap Events = true" End ise false, yani sadece notify aktif olduğu süre boyunca overlap çalışacak, harici zamanda damage vurmaz, burada yine dikkat etmen gereken kendine damage vurmamak, child kullanıyorsan ignore owner kuralına göre ayarlaman gerekir.
Çok iyi anladım. Deneyeceğim(y)