Menu

Unity3D ve C#

A Game Developer's Notebook

Linkedin

Bir Ray İçin Birden Fazla Layer’ı Göz Ardı Etmek (Ignoring Multiple Layers)

Yolladığımız bazı ray’lerin bazı layerlardaki objelerle etkileşime girmemesini isteriz. Peki bunu nasıl yaparız? Cevabı paylaşıyorum ve ardından kodu açıklıyorum.

RaySource objesinden Target(hedef) objesine doğru bir ray atacağız. Ray’imizin çıkış noktası objemizin orta noktası. Dolayısıyla atacağımız ray objemize de içten değecek. Yani objemizin bulunduğu layer’ı göz ardı etmemiz gerek. İte bu yüzden, Player Layer’ında bulunan objemizi, _ignoredLayers LayerMask’ına ekliyoruz.

Atacağımız ray ile Target objemiz arasında Friend objemiz yer almakta. Friendly Fire kapalı bir oyunda olduğumuzu ve yolladığımız Ray’in de mermi olduğunu düşünün. Bu merminin dost objeye dokunmaması gerekir. Bu yüzden Friend Layer’ını da göz ardı edilen layerlar arasına eklememiz gerekir. Bunu da yukarıda da yer aldığı gibi, şöyle yaptık:

Shot() fonksiyonu ile yolladığımız ray sonucu, ray’imizin dokunduğu objelerin isimlerini Debug.Log ile yazdırdık ve Friendly Fire kapalı bir oyunda en basit yöntemle dost objeleri nasıl göz ardı edeceğimizi öğrenmiş olduk.

Yaptığım tüm küçük çalışmaların linklerini Github’da tutmaktayım. Github’dan projeyi çekip, örnek çalışmaları deneyebilirsiniz.

Projeye buradan ulaşabilirsiniz.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.