Gamemaker'daki collısıon fonksiyonları ve İşlevleri

GameMaker'da iki objenin temas edip etmediğini ya da belli bir konumda belli bir objenin varlığını ya da yokluğunu belirleyebileceğimiz bazı hazır fonksiyonlar var. Fakat bu fonkisyonlar biraz fazlalar ve hepsi benzer gibi gözükseler de aslında farklı işlere yarıyorlar. Bu yüzden bunları karıştırabilmeniz çok normal. Ben de bu yazımda, en temel dört collision fonksiyonunu elimden geldiğince sizlere anlatmayı hedefliyorum.

Öncelikle GameMaker'da bu işe yarayan temelde 2 farklı fonksiyon grubu var. 1) "place" temelli olanlar -> (place_meeting, instance_place) 2)"position" temelli olanlar -> (position_meeting, instance_position) Bu iki grubu ayıran tek bir fark var. O da collision mask'e temas etmesi veya koordinattaki o noktaya temas etmesi. Burada ne demek istediğimi hemen açıklıyorum. Position temelli dediğim fonksiyonlar tam olarak girdiğiniz x ve y koordinatında bir objenin var olup olmadığını kontrol eden fonksiyonlardır. Place temelli olanlar ise, kodun içinde bulunduğu objeyi eğer ki girdiğiniz o koordinata götürürsek girdiğiniz o obje ile temas edip etmediğini ölçer. Bunu daha iyi anlamanız için hemen bir görsel ile birlikte destekleyeyim.

Gördüğünüz üzere soldaki position temelli olan fonksiyon direkt olarak girilen o noktada oBox2 objesinin var olup olmadığını kontrol ederken, sağdaki place temelli olan fonksiyon eğer ki mavi kutumuz o noktaya giderse oBox2 ile temas edip etmeyeceğini kontrol ediyor. (Not: Eğer objenizin mask'i yoksa bu değer her zaman false olarak döner. Çünkü mask'i olmayan bir obje, başka bir obje ile temas edemez.) Peki bu iki grup arasındaki farkı anladıysak sırada fonksiyonlardaki meeting ve instance farkı var. Fark ettiğiniz üzere bu iki fonksiyon grubunun (place, position) içlerinde ikişer tane farklı fonksiyon var. 1) Place temelli olanlar: a) place_meeting(x,y,obj); b) instance_place(x,y,obj); 2) Position temelli olanlar: a) position_meeting(x,y,obj); b) instance_position(x,y,obj); İkisi de aynı mantıkta olduğundan dolayı aralarından birini seçip onun ne olduğunu açıklamam yeterli olacaktır. Şimdilik position_meeting ve instance_position farkına bakalım (Aynı fark place temelli olanlar için de geçerlidir.) position_meeting, o noktada girdiğiniz obje ile temas edip etmediğini true/false olarak döndürürken, instance_position ise o noktadaki objenin id'sini size döndürür. Eğer ki o noktada bir obje varsa onun id'sini döndürür eğer ki yoksa da "noone" olarak döner. Hemen aynı şekilde bunu da görselleştirelim.

Gördüğünüz gibi, soldaki position_meeting true/false olarak dönerken, sağdaki instance_position ise o objenin id'sini (yani 100001) döndürüyor. (Not: Eğer orda bir obje yoksa instance_position "noone" olarak döner.)

Bunlardan farklı olarak bir çok collision kontrol eden fonksiyon bulunuyor fakat bunlar en temel fonksiyonlar olduğu için bu yazımda bu fonksiyonları ve farklarını göstermek istedim. Son olarak, 4 fonksiyonu da tek resim altında görürsek her şeyin daha anlaşılır olacağını düşünüyorum.


10 görüntüleme1 yorum

İlgili Yazılar

Hepsini Gör