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. < Resime gitmek için tıklayın >
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)?
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.?
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.
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.
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.
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 ?