# 1'de gösterildiği gibi bir platform karakteri için çarpışmayı kontrol ediyorum. Kırmızı noktalar kontrol edilen piksellerdir ve gri çizgiler ilgili eksenleri belirtir. Çarpışmayı bu şekilde kontrol etmekten elde ettiğim sonuçları beğendim (örneğin, sınırlayıcı kutuya karşı). Tek bir sorun dışında her şey tam istediğim gibi çalışır: ezilme tespiti.
Aşağıdaki görüntülerde, açık mavi kutu zemini, turuncu kutu bir nesneyi ve oklar hareket yönünü göstermektedir.
Oyuncunun ezildiğini tespit etmenin basit çözümü, karşı taraflardaki çarpışma noktalarının her ikisinin de tetikleyip tetiklemediğini görmektir. Eğer öyleyse, oyuncu eziliyor. # 2'de, normal bir ezilme senaryosu görebilirsiniz. Oyuncu topraklanır ve üstteki çarpışma noktaları düşen cisimle kesişir. Bu bir ezmeyi tetikler.
# 3, 4 ve 5 sorunlu senaryolar sunar. # 3'te, oyuncu yukarı hareket eden nesneye doğru hareket eder. Sağ taraftaki bir çarpışma noktası nesneyi vuruyor, bir çarpışmaya neden oluyor ve oyuncuyu durduruyor.
Şimdi, nesne yukarı hareket etmeye devam ederse ve oyuncu sağa doğru hareket etmeye devam ederse (# 4'te gösterildiği gibi), nesne oyuncuların sağ taraftaki çarpışma noktasını temizler ve oyuncu sağa hareket eder. Ama şimdi, bunu yaptıktan sonra, nesne bir dikey çarpışmaya neden olan bir üst çarpışma noktasını kesişiyor.
Benzer bir senaryo # 5'te gösterilmiştir. Alttaki çarpışma noktalarının temizlenmesi için iki nesne birbirinden yeterince uzaktır, oyuncunun düşmesine izin verir, ancak yan çarpışma noktalarının temizlenmesine izin vermeyecek ve istenmeyen bir yatay ezmeye neden olmayacak.
Beynimi bir çözüme tuttum, ama ortaya koyduğum hiçbir şey özellikle iyi çalışmadı, bu yüzden dışarıdaki birinin bu sorunları nasıl çözeceğine dair bir fikri veya fikri olup olmadığını merak ediyorum.
Biraz karışıklığı gidermek için kırmızı çarpışma noktaları hareketli grafiğin içinde olacaktır ve gri çizgiler yalnızca her çarpışma noktası için ilgili ekseni belirtmek için kullanılmıştır. Örneğin, karakterin hareketli grafiği basit bir yeşil kare olsaydı, toplama noktaları şöyle görünürdi: