Her MapChip türü için isabet algılamayı uygulayın
Doğrulama ortamı
- Windows
-
- Pencereler 11
- Birlik Editörü
-
- 2021.3.3f1
- Giriş Sistemi Paketi
-
- 1.3.0
Bu ipucu için önkoşullar
Aşağıdaki ayarlar, bu ipucunun açıklaması için bir öncül olarak önceden yapılmıştır.
Bu ipucunun önkoşulları nelerdir?
- Standart Unity kutucuk haritalarını kullanarak yukarıdan aşağıya 2B harita oluşturma
- Standart Fizik ile Çarpışma Kullanımı (2D)
- Kutucuk haritalarıyla isabet algılamayı uygulama
Harita materyallerini ödünç alma hakkında
Aşağıdaki sitelerden ödünç alınan işlemleri gerçekleştiriyoruz.
İlk başta
Bu kez, MapChip'ler bir TileMap'e yerleştirilir ve yerleştirilen MapTip'in türüne göre isabet belirleme yapılıp yapılmayacağına karar verilir.
Bu ipucu büyük ölçüde başka bir İpucu ile aynı olduğundan "Karolarla isabet tespiti uygula", Ayrıntılı bir açıklama için lütfen oraya bakın. Burada, aynı içerik için yalnızca prosedür açıklanır ve yalnızca farklılıklar eklenir.
Yürüyen karakterlerin uygulanması
İlk olarak, oyuncunun isabet algılama işlemini gerçekleştirmek için kontrol edeceği bir hareketli grafik görüntüsü hazırlayın ve projenize ekleyin. Bu sefer harita ipucunun boyutu 32 piksel, bu yüzden resmi aynı boyutta yapacağım.
Bu sefer yürüyüş animasyonunu atlayacağım çünkü uygulanırsa prosedür uzun sürecek. Bunu uygulamak istiyorsanız, lütfen aşağıdaki ipuçlarına bakın.
Projenize eklediğiniz görüntüyü seçin. Birimi harita çipiyle eşleştirmek istediğimizden, "Birim başına piksel sayısı" nı "32" olarak ayarlayın.
Yapılandırıldıktan sonra, aşağıdaki "Uygula" düğmesini tıklayın.
Görüntü ayarlandıktan sonra, görüntüyü görünüme bırakın ve nesneyi ekleyin.
Karakterin hareket sürecini ayarlayın. Komut dosyasını ekleyin ve adını .Player
Komut dosyası şöyle görünür: Bu, hareketli grafiği klavyeyle hareket ettiren basit bir hareket işlemidir.
using UnityEngine;
using UnityEngine.InputSystem;
public class Player : MonoBehaviour
{
// 一定時間ごとに呼ばれます
void FixedUpdate()
{
// キーボードの情報を取得
var keyboard = Keyboard.current;
// スプライトの移動処理
if (keyboard.leftArrowKey.isPressed)
{
transform.Translate(-0.1f, 0, 0, Space.World);
}
if (keyboard.rightArrowKey.isPressed)
{
transform.Translate(0.1f, 0, 0, Space.World);
}
if (keyboard.upArrowKey.isPressed)
{
transform.Translate(0, 0.1f, 0, Space.World);
}
if (keyboard.downArrowKey.isPressed)
{
transform.Translate(0, -0.1f, 0, Space.World);
}
}
}
Oluşturduğunuz komut dosyası karakter nesnesine eklenir.
Oyunu çalıştırın ve karakterin klavyeyle hareket edip etmediğini kontrol edin.
MapTips'i Hazırlama
Bir harita ipucu görüntüsü hazırlayın ve projenize ekleyin. Harita çiplerinin sayısı arttıkça ayar zahmetli hale geliyor, bu yüzden bu sefer sadece iki kare hazırladık, biri yürünebilen, diğeri yürüyemeyen kareler.
Projenize eklediğiniz görüntüleri seçin ve MapChips ayarlarını yapılandırın. Daha fazla bilgi için aşağıdaki ipuçlarına bakın:
Yapılandırıldıktan sonra, Uygula düğmesini ve ardından Hareketli Grafik Düzenleyicisi düğmesini tıklatın.
32 piksele bölün.
Palet oluşturmak için Kutucuk paleti sekmesini seçin. Sekme yoksa, bunları menüden "Pencere > 2D -> Karo Paleti" ile görüntüleyebilirsiniz. Palet adı herhangi bir şey olabilir, ancak burada "MapChipPalette" dir.
Bir klasöre kaydedeceğimiz için, Scene klasöründe yeni bir "MapChipPalette" klasörü oluşturun ve belirtin.
Projeye bir MapChipPalette klasörü eklendi.
Ardından, palete MapTips ekleyeceksiniz. Bölünmüş harita ipucu görüntüsünü palete sürükleyip bırakın.
MapTips palete eklenmiştir.
Harita oluşturma
İsabet algılama ayarlarını bir kenara bırakın ve önce haritayı oluşturun. İsabet algılamayı daha sonra ayarlayabilirsiniz. İlk olarak, hiyerarşinize bir kutucuk haritası ekleyin.
Eklendikten sonra Tilemap'i seçin. Görünümde bir kılavuz görüntülenir.
İlk olarak, görünümde duvar haline gelmeyen bir harita çipi ayarlayın.
Şimdilik, her yere koydum.
Ardından, duvar görevi görecek taş harita ucunu yerleştirin.
Bu sefer sorun yoktu, ancak karakteriniz haritanın arkasında olacaksa, Katman Sırası'nı Tilemap'ten daha büyük bir sayıya ayarlayın.
Tabii ki bu noktada oyunu hareket ettirseniz bile duvardan kayacak ve yürüyeceksiniz.
MapChip isabet algılama ayarları
Buradan, her harita çipi türü için isabet kararına girip girmeyeceğimizi ayarlayacağız. İlk olarak, paleti oluştururken oluşturduğunuz "MapChipPalette" klasörünü açın.
İçerideki palette ayarlanmış bir harita ipucu vardır, bu nedenle önce üzerinde yürüyebileceğiniz bir harita ipucu seçin.
Denetçiden, Çarpıştırıcı Türü değerini Hiçbiri olarak ayarlayın. Daha sonra, Tilemap'e bir çarpışma algılama ayarı ekleyeceksiniz, ancak bunu "Yok" olarak ayarlamak bu harita yongasının çarpışmasını önleyecektir.
Diğer taş harita ipucu "Izgara" olarak ayarlanmıştır. Bu sefer şeffaf bir harita ipucu olmadığı için "sprite" ile ilgili bir sorun yok ancak "sprite" olarak ayarlarsanız görüntünün saydam kısmına vurularak değerlendirilmeyecektir.
MapTip'te hepsi bu kadar. Kolay çünkü bu sefer sadece iki tane var, ancak çok sayıda harita çipiniz varsa, bu kadarını ayarlamanız gerekir.
Çarpışma Algılama Ayarları
Buradan, "Tilemap ile isabet tespiti uygula" içeriğiyle neredeyse aynıdır.
İlk olarak, karakter çakışması algılaması için gerekli ayarları yapın. Bileşen olarak "Physics 2D -> Circle Collider 2D" ekleyin. Bu sefer, hareketli grafik yuvarlaktır, bu yüzden onu bir Daire yaptım, ancak lütfen şekle göre Kutu veya Kapsül'ü seçin.
Ayrıca "Fizik 2D -> Rijitbody 2D" ekleyeceğiz.
Yerçekiminin düşmesini önlemek için yerçekimi ölçeğini 0 olarak ayarlayın. Ayrıca, hareketli grafiğin dönmesini önlemek için Z'de "Döndürmeyi düzelt" ifadesini kontrol edin.
Tilemap için, Tilemap -> Tilemap Collider 2D bileşenini ekleyin.
Görünümdeki taş harita ucunun etrafına yeşil bir çizgi eklendiğini görebilirsiniz. Bu, isabet algılamanın yalnızca taşlar için ayarlandığı anlamına gelir. Yukarıdaki paletteki harita ipucunun çarpıştırıcı türü ayarının yansıtıldığını görebilirsiniz.
Oyunu çalıştırmayı ve duvara doğru yürümeyi deneyin. Bence karakterin duvarın önünde düzgün bir şekilde durduğundan emin olabilirsiniz. İsabet tespiti ile ilgili herhangi bir program yazmadan kolayca uygulanabileceğini görebilirsiniz.
MapChip isabet algılamayı birleştirme
Aşağıdaki ipuçlarında belirtildiği gibi, gerçekten hareket ettirdiğinizde, duvar çarpması algılama davranışı biraz gariptir. Nedeni ve geçici çözümü aşağıdaki İpuçları'nda açıklanmıştır.
Ancak harita çipinin isabet algılama kısmını birleştirerek garip davranış düzeltilecek ve aynı zamanda işlem yükü de azalacak, o yüzden en azından bunu yapalım.
İlk olarak, Tilemap Collider 2D'deki "Kompozitte kullan" seçeneğini işaretleyin.
Bileşen Ekle altında, Fizik 2B -> Kompozit Çarpıştırıcı 2B'yi seçin.
"Rigidbody 2D" de eklenecek, bu yüzden "Statik" e "Vücut Tipi" yapın.
O zaman, taşın isabet kararının her harita çipi için olmadığını ve birleştirildiğini doğrulayabileceğinizi düşünüyorum.
Şimdi oyunu çalıştırın ve düzgün çalıştığından emin olun.