Menerapkan deteksi hit untuk setiap jenis MapChip

Halaman Diperbarui :
Tanggal pembuatan halaman :

Lingkungan verifikasi

Windows
  • jendela 11
Editor Kesatuan
  • 2021.3.3f1
Paket Sistem Input
  • 1.3.0

Prasyarat untuk tip ini

Pengaturan berikut telah dibuat sebelumnya sebagai premis untuk deskripsi tip ini.

Apa prasyarat untuk tip ini?

Tentang meminjam bahan peta

Kami memproses pinjaman dari situs-situs berikut.

Pada awalnya

Kali ini, MapChips ditempatkan dalam satu TileMap, dan diputuskan apakah akan melakukan penentuan hit sesuai dengan jenis MapTip yang ditempatkan.

Karena tip ini sebagian besar sama dengan Tip lain "Terapkan deteksi hit dengan tilemaps", Silakan merujuk ke sana untuk penjelasan rinci. Di sini, hanya prosedur yang dijelaskan untuk konten yang sama, dan hanya perbedaan yang ditambahkan.

Implementasi karakter berjalan

Pertama, siapkan gambar sprite yang akan dikontrol pemain untuk melakukan operasi deteksi hit dan menambahkannya ke proyek Anda. Kali ini, ukuran maptip adalah 32 piksel, jadi saya akan membuat gambar dengan ukuran yang sama.

Saya akan menghilangkan animasi berjalan kali ini karena prosedurnya akan lama jika diterapkan. Jika Anda ingin menerapkannya, silakan lihat tips berikut.

Pilih gambar yang Anda tambahkan ke proyek Anda. Karena kita ingin mencocokkan unit dengan chip peta, atur "Jumlah piksel per unit" ke "32".

Setelah dikonfigurasi, klik tombol "Terapkan" di bawah ini.

Setelah gambar diatur, jatuhkan gambar ke dalam tampilan dan tambahkan objek.

Atur proses gerakan karakter. Tambahkan skrip dan biarkan bernama Player .

Skripnya terlihat seperti ini: Ini adalah proses gerakan sederhana yang menggerakkan sprite dengan keyboard.

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);
    }
  }
}

Skrip yang Anda buat dilampirkan ke objek karakter.

Jalankan game dan periksa apakah karakter bergerak dengan keyboard.

Mempersiapkan Tips Peta

Siapkan gambar tip peta dan tambahkan ke proyek Anda. Seiring bertambahnya jumlah chip peta, pengaturan menjadi merepotkan, jadi kali ini kami hanya menyiapkan dua kotak, satu yang bisa berjalan dan satu yang tidak bisa berjalan.

Pilih gambar yang Anda tambahkan ke proyek Anda dan konfigurasikan pengaturan untuk MapChips. Lihat tips berikut untuk informasi selengkapnya:

Setelah dikonfigurasi, klik tombol Apply dan kemudian tombol Sprite Editor.

Bagi dengan 32 piksel.

Pilih tab Palet ubin untuk membuat palet. Jika tidak ada tab, Anda dapat menampilkannya dari menu dengan "Window > 2D -> Tile Palette". Nama palet bisa apa saja, tapi ini dia "MapChipPalette".

Karena kita akan menyimpannya di folder, buat folder "MapChipPalette" baru di folder Scene dan tentukan.

Folder MapChipPalette telah ditambahkan ke proyek.

Selanjutnya, Anda akan menambahkan MapTips ke palet. Seret dan lepas gambar split maptip ke palet.

MapTips telah ditambahkan ke palet.

Membuat peta

Kesampingkan pengaturan deteksi hit dan buat peta terlebih dahulu. Anda dapat mengatur deteksi hit nanti. Pertama, tambahkan peta petak peta ke hierarki Anda.

Setelah ditambahkan, pilih Tilemap. Tampilan menampilkan kisi.

Pertama, atur mapchip yang tidak menjadi dinding dalam tampilan.

Untuk saat ini, saya meletakkannya di semua tempat.

Selanjutnya, tempatkan maptip batu yang akan berfungsi sebagai dinding.

Kali ini tidak ada masalah, tetapi jika karakter Anda akan berada di belakang peta, atur Layer Order ke angka yang lebih besar dari Tilemap.

Tentu saja, bahkan jika Anda memindahkan permainan pada titik ini, Anda akan menyelinap melewati dinding dan berjalan.

Pengaturan deteksi hit MapChip

Dari sini, kita akan mengatur apakah akan memasukkan penilaian hit untuk setiap jenis chip peta. Pertama, buka folder "MapChipPalette" yang Anda buat saat membuat palet.

Ada maptip yang diatur di palet di dalamnya, jadi pertama-tama pilih maptip yang bisa Anda jalani.

Dari Inspektur, atur nilai Jenis Collider ke Tidak Ada. Nantinya, Anda akan menambahkan pengaturan deteksi tabrakan ke Tilemap, tetapi mengaturnya ke "Tidak Ada" akan mencegah mapchip ini bertabrakan.

Ujung peta batu lainnya diatur ke "Grid". Karena kali ini bukan tip peta transparan, tidak ada masalah dengan "sprite", tetapi jika Anda mengaturnya ke "sprite", itu tidak akan dinilai dengan menekan bagian transparan dari gambar.

Itu saja yang ada untuk MapTip. Sangat mudah karena hanya ada dua dari mereka kali ini, tetapi jika Anda memiliki banyak chip peta, Anda perlu mengatur sebanyak itu.

Pengaturan Deteksi Tabrakan

Dari sini, hampir sama dengan konten "Terapkan deteksi hit dengan tilemap".

Pertama, buat pengaturan yang diperlukan untuk deteksi tabrakan karakter. Tambahkan "Physics 2D -> Circle Collider 2D" sebagai komponen. Kali ini, spritenya bulat, jadi aku membuatnya menjadi Lingkaran, tapi tolong pilih Kotak atau Kapsul sesuai bentuknya.

Kami juga akan menambahkan "Fisika 2D -> Rigidbody 2D".

Atur skala gravitasi ke 0 untuk mencegah gravitasi jatuh. Juga, centang Z untuk "Perbaiki rotasi" untuk mencegah sprite berputar.

Untuk Tilemap, tambahkan komponen Tilemap -> Tilemap Collider 2D.

Anda dapat melihat bahwa garis hijau telah ditambahkan di sekitar ujung peta batu dalam tampilan. Ini berarti bahwa deteksi hit diatur hanya untuk batu. Anda dapat melihat bahwa pengaturan tipe collider dari maptip pada palet di atas tercermin.

Cobalah menjalankan permainan dan berjalan menuju dinding. Saya pikir Anda dapat memastikan bahwa karakter berhenti di depan dinding dengan benar. Anda dapat melihat bahwa itu dapat dengan mudah diimplementasikan tanpa menulis program apa pun yang terkait dengan deteksi hit.

Menggabungkan deteksi hit MapChip

Seperti yang disebutkan dalam tips di bawah ini, ketika Anda benar-benar memindahkannya, perilaku deteksi benturan dinding agak aneh. Penyebab dan solusinya dijelaskan dalam Tips di bawah ini.

Namun, dengan menggabungkan bagian deteksi hit dari chip peta, perilaku aneh akan diperbaiki dan beban pemrosesan akan berkurang pada saat yang sama, jadi mari kita lakukan minimal.

Pertama, centang "Gunakan dalam komposit" di Tilemap Collider 2D.

Di bawah Tambahkan Komponen, pilih Physics 2D -> Composite Collider 2D.

"Rigidbody 2D" juga akan ditambahkan, jadi buat "Body Type" menjadi "Static".

Kemudian, saya pikir Anda dapat memastikan bahwa penilaian hit batu itu bukan untuk setiap chip peta dan digabungkan.

Sekarang jalankan game dan pastikan itu berfungsi dengan baik.