Şimdi Ara

OnTriggerEnter'ı scriptin atanmadığı 2 obje için kullanmak...

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
0
Favori
628
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri
  • Son Yorum 4 yıl
  • Cevaplayan Üyeler 3
  • Konu Sahibinin Yazdıkları 5
  • Ortalama Mesaj Aralığı 6 saat 6 dakika
  • Haberdar Edildiklerim (Alıntılar) 3
  • Konuya En Çok Yazanlar
  • Excalıburr (5 mesaj) Baxa (2 mesaj) Okeanix (2 mesaj)
  • Konuya Yazanların Platform Dağılımı
  • Masaüstü (8 mesaj) Mobil (1 mesaj)
  • @
0 oy
Öne Çıkar
Giriş
Mesaj
  • Merhabalar. Yapmak istediğim şey şu: Plane'e atadığım script ile oyundaki atıyorum küp ile kürenin çarpışıp çarpışmadığını öğrenmek istiyorum.

    Bunun için Physics.ComputePenetration kullanmayı denedim. İki objeyi parametre olarak alıyor ve çarpışıp çarpışmadığını bool değeri olarak döndürüyor. Fakat bu işlem sanırım biraz zorluyor ve oyunun yavaşlamasına sebep oluyor.

    Bunun alternatifi var mıdır acaba ? Yada OnTriggerEnter'ı plane'e atadığım scriptte kullanmanın bir yolu ?



  • Tag ekleyerek sorunu çözebilirsin, çarpan nesnenin tagı uyuşur ise istediğin işlemi yaptırırsın.
    Başka birine attıgım carpısma kodu.
    OnTriggerEnter'ı scriptin atanmadığı 2 obje için kullanmak...

    OnTriggerEnter'ı scriptin atanmadığı 2 obje için kullanmak...




  • Baxa kullanıcısına yanıt
    Cevap için teşekkürler. Yalnız ben farklı bir şeyden bahsediyorum. Küp kürenin alanına girdiğinde, küpe veya küreye eklenmiş bir scriptle değil, plane'e eklenmiş bir script ile kontrol etmek istiyorum.

    Aslında burada başka bir sorum daha var. Multiplayer oyun yapıyorum. Bu çarpışma hesabını server'da mı yapmalıyım yoksa plane'e atadığım script'te yapsam olur mu (güvenlik açısından)?
  • quote:

    Orijinalden alıntı: Excalıburr

    Cevap için teşekkürler. Yalnız ben farklı bir şeyden bahsediyorum. Küp kürenin alanına girdiğinde, küpe veya küreye eklenmiş bir scriptle değil, plane'e eklenmiş bir script ile kontrol etmek istiyorum.

    Aslında burada başka bir sorum daha var. Multiplayer oyun yapıyorum. Bu çarpışma hesabını server'da mı yapmalıyım yoksa plane'e atadığım script'te yapsam olur mu (güvenlik açısından)?
    Neden kolay yol var iken zor yolu yapmaya calisiyorsun.?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Excalıburr

    Cevap için teşekkürler. Yalnız ben farklı bir şeyden bahsediyorum. Küp kürenin alanına girdiğinde, küpe veya küreye eklenmiş bir scriptle değil, plane'e eklenmiş bir script ile kontrol etmek istiyorum.

    Aslında burada başka bir sorum daha var. Multiplayer oyun yapıyorum. Bu çarpışma hesabını server'da mı yapmalıyım yoksa plane'e atadığım script'te yapsam olur mu (güvenlik açısından)?
    Üstte ki gibi Physics.ComputePenetration yapıcaksın ama eğer kasıyor diyorsan o zaman @Baxa dediği gibi yapıcaksın başka yolu yok.

    Çarpışma hesabını sunucuda yapmana gerek yok eğer bu oyunun çok önemli bir parçası değilse. Çünkü bu sunucu call(rpc) olayını çok yaparsan yavaşlıcak ve kasmaya başlıcak yine network. Ne kadar az kullanılırsa o kadar iyi. Eğer statik bir şeyle uğraşıyorsan bırak oyuncu kendi load etsin.

    Ayrıca farklı bir scriptten kontrol etmek performans olarak iyi değil onun yerine ufak scriptleri atayarak yapmak yine daha iyi yoksa her objenin fiziğini sürekli kontrol ettirmek yine oyunu kastırır benim görüşüm.



    < Bu mesaj bu kişi tarafından değiştirildi Okeanix -- 15 Temmuz 2019; 14:55:44 >




  • quote:

    Orijinalden alıntı: Baxa

    Neden kolay yol var iken zor yolu yapmaya calisiyorsun.?

    Alıntıları Göster
    Multiplayer oyunda hesapları server'da yapmak gerekmiyor mu?
  • Kontrol ettiğim hero ile rakip kulenin alanına girersem kulenin canı azalmaya başlayacak. Çarpışma bu.

    Call olayı ise update'in içinde her frame'de 1 kere oluyor. Yürüme ve kuleye vurma olayını aynı call gönderiyor. Dolayısıyla fazladan call gibi bir sorun yok.

    Farklı bir scriptten kontrol etmek derken Kuleye atadığım script ile kontrol ediyorum ama göndermeyi plane'e atadığım script ile yapıyorum. (Zaten herşeyi plane'e atadığım script üzerinden yapıyorum.
  • quote:

    Orijinalden alıntı: Excalıburr

    Kontrol ettiğim hero ile rakip kulenin alanına girersem kulenin canı azalmaya başlayacak. Çarpışma bu.

    Call olayı ise update'in içinde her frame'de 1 kere oluyor. Yürüme ve kuleye vurma olayını aynı call gönderiyor. Dolayısıyla fazladan call gibi bir sorun yok.

    Farklı bir scriptten kontrol etmek derken Kuleye atadığım script ile kontrol ediyorum ama göndermeyi plane'e atadığım script ile yapıyorum. (Zaten herşeyi plane'e atadığım script üzerinden yapıyorum.
    Herkes farklı şekilde halleder o yüzden zaten hallettiysen sorun değil.

    Moba tarzı bir kule yapıcak olsam. Kulenin etrafına yuvarlak bir collider oluşturur ve içine girdiğinde kule scriptinde can azaltma fonksiyonunu çalıştırırım. En performans böyle yapılıyor. Eğer kule altına girdiyse ontriggerenter çalışır zaten other'dan giren heronun kule altında bool'unu true döndürebilirsiniz.

    Kulenin kendi colliderı varsa ve nasıl 2. collider atıcam diyorsan child objesi (yani altına boş bir obje oluşturabilirsın) sonra ona atıcağın scriptle üstündeki ona bağlı objeyi çalıştırıp oradanda playere kod gönderebilirsin. Veya kule zaten statik bir obje olduğu için onu child yapabilirsin.



    < Bu mesaj bu kişi tarafından değiştirildi Okeanix -- 15 Temmuz 2019; 18:9:4 >




  • Aynen zaten dediğiniz gibi kuleye sphere collider ekleyip genişletmiştim. O şekilde kullanıyorum. Teşekkürler ilginiz alakanız için :)
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.