GM:ShouldCollide
Açıklama
Bir çift varlığın (entity) birbiriyle çarpışıp çarpışmayacağına karar vermek için çağrılır. Bu, yalnızca bir veya her iki varlıkta Entity:SetCustomCollisionCheck kullanıldıysa çağrılır.
Uygulanabilir olduğu durumlarda, bunun yerine constraint.NoCollide veya bir logic_collision_pair varlığı kullanmayı düşünün - bunların kullanımı oldukça daha kolaydır ve bazı durumlarda daha uygun olabilir.
Bir varlığın çarpışma kurallarını değiştirecek şekilde değişmesi durumunda, o varlık üzerinde derhal Entity:CollisionRulesChanged fonksiyonunu çağırmalısınız - bu hook içinde ve fizik geri çağrımlarında (physics callbacks) değil.
Örneklerle belirlenen kurallara harfiyen uyduğunuz sürece bu hook, bozulmadan güvenilir bir şekilde çalışacaktır, küçük bir hata bile fiziği bozabilir.
Argümanlar
Döndürülen Değerler
Örnek
Oyuncuların birbiriyle çarpışmadığı basit bir örnek.
Örnek
En iyi uygulama olarak, bu hook için mümkün olduğunca önbelleğe alınmış değerlerin kullanılması önerilir. Bu hook'un içinde herhangi bir hesaplama yapmak hem son derece maliyetlidir hem de aynı varlık çifti için dönüş değerindeki bir değişiklik için Entity:CollisionRulesChanged fonksiyonunu çağırmama riskini taşır.
Örnek
Entity:SetCustomCollisionCheck çağrılmadan önce, bir ShouldCollide dönüşünü kontrol eden koşullar her zaman ayarlanmalıdır. Bunun yapılmaması, başlangıç değeri atanmamış değerlerin birkaç kare boyunca farklı olması ve dönüş değerini etkilemesi nedeniyle fiziğin bozulmasına neden olacaktır.
Örnek
Bir çift varlık için her zaman aynı değeri döndürmelisiniz, bu yüzden argümanların sırasına bakılmaksızın onları aynı şekilde kontrol etmelisiniz
Örnek
Bu hook'u birden fazla kez eklemekten kaçının, çalıştırılması son derece maliyetlidir. Bunun yerine, gerektiğinde çarpışmaları devre dışı bırakmak için varlıklara bir fonksiyon verdiğiniz ters bir desen kullanabilirsiniz, bu da çok sayıda hook eklemekten kaçınmanızı sağlar.
Örnek
Eğer bu hook içinde bir oyuncunun Takımını (Team) bir değişken olarak kullanmak isterseniz, takım değişikliklerinden hemen sonra Entity:CollisionRulesChanged'ı çağırmanız gerektiğini aklınızda bulundurmalısınız.
Örnek
Bu hook, özel Çarpışma Grupları (Collision Groups) oluşturmak için de kullanılabilir, koşullarının değişmesi beklenmediği sürece bu, hook'u kullanmanın oldukça güvenli bir yoludur. Bu, özellikle özel bir varlık tabanında kullanıldığında güçlüdür.
Örnek
Bu hook, yalnızca ondan etkilenen herhangi bir varlık var olmadan ÖNCE eklenmelidir, bu genellikle onu bir sunucunun yükleme aşamasında oluşturmanız gerektiği anlamına gelir. Dinamik olarak eklemek ve kaldırmak belaya davetiye çıkarmaktır.
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord