Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Ve (and) Oprearatörü ile şart sorunu
#1

Arkadaşlar şöyle bir sorun yaşıyorum, kendi karakterimi koypayalayıp düşman karakter oluşturdum, ve benim ana karakterimle belli bir mesafeye ve aynı yüksekliği (z ekseni) ne gelince ateş etmesini sağlamaya çalışıyorum. Aslında bunu başardımda, X EKSENİNDE belirli bir mesefeye gelince VE Z EKSENİNDE aynı seviyede olduklarında şartlar yerine geliyor yani (TRUE ) oluyor ve düşman karakter durup bana ateş ediyor.

Ama,  network 4 kere çalıştıktan sonra devreye girmiyor. Sanki kendini yenileyemiyor gibi yada 4 kere çalıştıktan sonra bozuluyor gib. Aşağıda networkün resmini gönderiyorum, daha önce bu tip bir şey başınıza geldi mi ? 


Mesela eğer aynı z eksenin de olma şartını ortadan  kaldırdığım zaman sorunsuz çalışıyor, ama aynı z eksenleri şartı olduğu zaman 4 kere çalıştıktan sonra teklemeye başlıyor.

[img]5aNOEl.jpg[/img]

Ara
Cevapla
#2
Değerlerdeki noktaların üstüne sağ tiklayip watch value yapip, oyunu çalıştırırken değerlere bakarsan hatanın nerede olduğunu daha iyi anlarsın.
Ara
Cevapla
#3
Bence de değerleri gözlemle. Çalışmayı kestiği 5. ateşlemede koşulları oluşturan değerler nedir onlara bakman lazım.
Özelden sorulan UE4 soruları cevaplanmayacaktır...
Cevapla
#4
Network dediğin şeyi, gösterdiğin blueprint scripti olarak algılıyorum. 

Floating point için hesaplama değerleri yanlış olabilir veya hesaplanabilir fakat yapmak istediğin şey en temiz yöntemle her bir tick için bu karşılaştırmayı yapmak yerine Linetrace(Raycasing) ile yapılması en muhtemel şey. 

Aşağıdaki videoda navigasyonun konumuna göre bir raycasting hesaplaması yapılıyor. Kısacası 2 boyutlu düzlemde belirli bir vektörden, bitiş vektörüne kadar bir doğru çiziliyor ve buna çarpan nesnelerin referansları alınabilinliyor.





3 Boyutlu düzlemde de şu şekilde oluyor, silahın ucundan diğer nesneye çarpabilen tek kanallı bir vektörel iz takipçisi:





İlla ben böyle karşılaştıracağım diyorsan floating number precisionları tolere etmek için için isnearlyequal düğümü var: http://api.unrealengine.com/INT/Blueprin...ual_float/
Cevapla
#5
Arkadaşlar tekrardan selam, cevaplarınız için çok teşekkür ederim. Sorunu çözdüm.

Karakter her zıplayıp yere tekrar indiğinde ondalık olarak  mesela 0.0001 gibi farklı seviyelere iniş yapıyormuş. Bundan dolayı düşman karakter ile önemsenmeyecek kadar az bir yükseklik farkı oluyormuş.

Fakat kıyasladığım değerler FLOAT türünden olduğu için koşulu bozuyor ve çalışmasını engelliyorumuş. Ben de değerleri İNT türüne çevirip öyle kıyaslayınca sorun çözüldü Smile

Yanlız hiç bir matematiksel farklılık olmamasını rağmen niçin FLOAT türünde  çok düşük ondalıkta bile olsa fark ortaya çıktığını anlamış değilim, onun nedenini henüz bulamadım.

Mesela ilk başlarken karakterin buldunduğu yükseklik 63.0002 ise  zıplayıp tekrar düştüğü yükseklik 63.0001 oluyor, tekrar zıplayıp yere indiğinde 63.0004 oluyor. Bunun sebebini anlamadım. Bug mıdır yoksa gözümden kaçakan, ACTOR de sabitlemem gereken bir şey var da ben mi farkında değilim bulamadım.

Tekrardan çok teşekkür ederim değerli cevaplarınız için Smile
Ara
Cevapla
#6
(11-02-2019, Saat: 17:25)Khubur Adlı Kullanıcıdan Alıntı:  Network dediğin şeyi, gösterdiğin blueprint scripti olarak algılıyorum. 

Floating point için hesaplama değerleri yanlış olabilir veya hesaplanabilir fakat yapmak istediğin şey en temiz yöntemle her bir tick için bu karşılaştırmayı yapmak yerine Linetrace(Raycasing) ile yapılması en muhtemel şey. 

Aşağıdaki videoda navigasyonun konumuna göre bir raycasting hesaplaması yapılıyor. Kısacası 2 boyutlu düzlemde belirli bir vektörden, bitiş vektörüne kadar bir doğru çiziliyor ve buna çarpan nesnelerin referansları alınabilinliyor.





3 Boyutlu düzlemde de şu şekilde oluyor, silahın ucundan diğer nesneye çarpabilen tek kanallı bir vektörel iz takipçisi:





İlla ben böyle karşılaştıracağım diyorsan floating number precisionları tolere etmek için için isnearlyequal düğümü var: http://api.unrealengine.com/INT/BlueprintAPI/Math/Float/NearlyEqual_float/

Mesajını şimdi gördüm, hemen inceleyeceğim bu tutorialleri, tam söylediğin gibi float türünden değerlerde ondalık anlamda sapma oluyor. Int türüne çevirip sorunu şimdilik çözdüm fakat matematiksel olarak her şey aynıyken neden float değerinde çok küçükte olsa oynama oluyor onu anlayamadım.
Ara
Cevapla
#7
Float değerlerinde bu tür sapmalar olması normal, motora özgü birşey de değil, o yüzden float değerler için Nearly Equal gibi kıyaslamalar kullanmak en sağlıklısı veya imkan olan zamanlarda integer'e dönüştürüp kıyaslama yapılabilinir.
Özelden sorulan UE4 soruları cevaplanmayacaktır...
Cevapla
#8
(11-02-2019, Saat: 21:10)huso Adlı Kullanıcıdan Alıntı:  
(11-02-2019, Saat: 17:25)Khubur Adlı Kullanıcıdan Alıntı:  Network dediğin şeyi, gösterdiğin blueprint scripti olarak algılıyorum. 

Floating point için hesaplama değerleri yanlış olabilir veya hesaplanabilir fakat yapmak istediğin şey en temiz yöntemle her bir tick için bu karşılaştırmayı yapmak yerine Linetrace(Raycasing) ile yapılması en muhtemel şey. 

Aşağıdaki videoda navigasyonun konumuna göre bir raycasting hesaplaması yapılıyor. Kısacası 2 boyutlu düzlemde belirli bir vektörden, bitiş vektörüne kadar bir doğru çiziliyor ve buna çarpan nesnelerin referansları alınabilinliyor.





3 Boyutlu düzlemde de şu şekilde oluyor, silahın ucundan diğer nesneye çarpabilen tek kanallı bir vektörel iz takipçisi:





İlla ben böyle karşılaştıracağım diyorsan floating number precisionları tolere etmek için için isnearlyequal düğümü var: http://api.unrealengine.com/INT/BlueprintAPI/Math/Float/NearlyEqual_float/

Mesajını şimdi gördüm, hemen inceleyeceğim bu tutorialleri, tam söylediğin gibi float türünden değerlerde ondalık anlamda sapma oluyor. Int türüne çevirip sorunu şimdilik çözdüm fakat matematiksel olarak her şey aynıyken neden float değerinde çok küçükte olsa oynama oluyor onu anlayamadım.

Her bir frame için sürekli bu koşulu çağırmak doğru değil. Bunu yerine linetrace + projectilemovementcomponent kullanabilrisin. Floating number precision gibi sorunlardan ondalık kısmın uzantısını dengeleme belirsizliğine yol açtığı gibi ilerisi için ciddi performans sorunlarına neden olabilir. Çünkü sahnende bir sürü sprite var ve bunların her biri motorun tick ile orantılı şekilde harekete geçip diğer threadleri optimize ederek belirtmek zorunda.
Cevapla
 


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question Para Kazanma ve Harcama Sistemi Sorunu xist 3 159 18-08-2019, Saat: 20:15
Son Yorum: xist
Question [ACEMİ SORUSU] Mobil Widget Glew etkisi sorunu huso 0 86 09-08-2019, Saat: 02:17
Son Yorum: huso
  [ÇÖZÜLDÜ) Unreal engine donma sorunu ks5454 2 350 27-03-2019, Saat: 16:23
Son Yorum: ks5454
  [ACEMİ SORUSU] Unreal Engine Tab sorunu Lilime'S Stone 1 247 22-01-2019, Saat: 14:01
Son Yorum: Khubur
  Ekran sorunu Nkhan35 5 441 11-01-2019, Saat: 17:21
Son Yorum: Mr.jack
  [ACEMİ SORUSU] Render Sonrası Gölge Sorunu ululemr 4 455 03-01-2019, Saat: 16:07
Son Yorum: ululemr
  Actor Begin Overlap Sorunu Airland 0 285 19-11-2018, Saat: 14:46
Son Yorum: Airland
  Objelerde Sarı Ünlem Ve Obje Eklendiğinde (Lighting Needs To Be Rebuilt) Sorunu Airland 2 395 19-11-2018, Saat: 03:30
Son Yorum: Airland
  Paint Color Sorunu Semruk 1 407 01-09-2018, Saat: 10:07
Son Yorum: ahtek07
  donma sorunu husyntrn 1 448 31-08-2018, Saat: 15:12
Son Yorum: TornadoTT

Hızlı Menü:


Unreal Engine Türkiye

This forum is only for fans and support. It has nothing to do with Epic Games.

Bu site sadece fan ve destek amaçlıdır. Epic Games ile bir ilgisi yoktur.