Bir yorumda Gamasutra makalesine zaten karmington bağlı olduğunu fark ettiğimde Walker düşmanı üzerindeki Asteroid Base bloguna bir link göndermek üzereydim .
Muhtemelen bu, kendi başına bir cevap olarak biraz daha görünürlük ve açıklama vermeye değer.
Hile raycasts . Bunlar, kodunuzun bir çarpışma için bir çizgi boyunca taramasına izin verir.
Walker'ın yüzeylere güzel bir şekilde hizalanmasını sağlamak için, biri Walker'ın sol tarafından diğeri sağdan (yukarıdaki kırmızı ve sarı çizgiler) aşağıya doğru iki ışın atarlar.
Her RaycastHit2D nesnesinden, yüzeye dik gösteren normal bir vektör elde edebilirsiniz (macenta ve yeşil çizgiler). Normalleri iki vuruştan ortalayarak, karakterin için altta yatan araziyi (camgöbeği çizgiyi) makul derecede yansıtan uygun bir oryantasyon elde edersiniz.
Karakteri araziye takılı tutmak için (bu sürtünme düşükse bazı kaymalara yol açabilir) veya karakteri Walker ile yapılan ortalama ışın kesişme noktasına manuel olarak konumlandırmak için aşağı doğru bir kuvvet uygulayabilirsiniz.
Karakterinizin titreyen veya görünen robotik olmasını engellemek için karakterin yönünü kademeli olarak karıştırmak istersiniz (Walker köşeyi geçtiğinde normalin nasıl keskin bir şekilde değiştiğine bakın, ancak vücut yumuşak bir şekilde hareket eder).
Eğer arazinizde keskin köşeler varsa, muhtemelen bu ışınları hafifçe içeriye doğru açılamak isteyeceksiniz - böylelikle örümcek 90 derecelik bir uçurumun kenarından geçerse, çıkıntılı ışın uçurum yüzeyine çarpacaktır.
Asteroid Base ekibi ayrıca Walker'in hareketi (gösterilmemiştir) yönünde kısa bir ışın da çeker ve bu, araziye çarparsa o taraftaki ışını geçersiz kılar. Bu 90 derecelik içbükey bir köşeye girerken yürüteç sıkışmış olmamasını sağlar.
Dokümanlara göre, 2B raycast, 3B'den farklıdır ve içinde ışının başladığı çarpıştırıcıları tespit eder. Bu bana balık gibi geliyor, ancak testiniz bunu onaylarsa, sadece tırmanılabilir arazi çarpışmasını tespit etmek için ışınları sınırlamak için bir layerMask kullanmak isteyeceksiniz.