Melaksanakan pengesanan hit untuk setiap jenis MapChip

Laman dikemaskini :
Tarikh penciptaan halaman :

Persekitaran pengesahan

Windows
  • Windows 11
Penyunting Perpaduan
  • 2021.3.3F1
Pakej Sistem Input
  • 1.3.0

Prasyarat untuk petua ini

Tetapan berikut telah dibuat terlebih dahulu sebagai premis untuk penerangan petua ini.

Apakah prasyarat untuk petua ini?

Mengenai meminjam bahan peta

Kami memproses pinjaman dari laman web berikut.

Pada mulanya

Kali ini, MapChips diletakkan dalam satu TileMap, dan diputuskan sama ada untuk melaksanakan penentuan hit mengikut jenis MapTip yang diletakkan.

Oleh kerana petua ini sebahagian besarnya sama dengan Petua lain "Melaksanakan pengesanan hit dengan peta jubin", Sila rujuk di sana untuk penjelasan terperinci. Di sini, hanya prosedur yang dijelaskan untuk kandungan yang sama, dan hanya perbezaan yang ditambahkan.

Pelaksanaan watak berjalan

Pertama, sediakan imej sprite yang akan dikawal oleh pemain untuk melakukan operasi pengesanan hit dan tambahkannya pada projek anda. Kali ini, saiz hujung peta ialah 32 piksel, jadi saya akan menjadikan imej itu saiz yang sama.

Saya akan meninggalkan animasi berjalan kali ini kerana prosedurnya akan panjang jika ia dilaksanakan. Jika anda ingin melaksanakannya, sila rujuk petua berikut.

Pilih imej yang anda tambahkan pada projek anda. Oleh kerana kita ingin memadankan unit dengan cip peta, tetapkan "Bilangan piksel per unit" kepada "32".

Setelah dikonfigurasikan, klik butang "Terapkan" di bawah.

Setelah imej ditetapkan, lepaskan imej ke dalam pandangan dan tambah objek.

Tetapkan proses pergerakan watak. Tambah skrip dan biarkan ia dinamakan Player .

Skrip kelihatan seperti ini: Ini adalah proses pergerakan mudah yang menggerakkan sprite dengan papan kekunci.

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 cipta melekat pada objek aksara.

Jalankan permainan dan semak sama ada watak bergerak dengan papan kekunci.

Menyediakan Petua Peta

Sediakan imej petua peta dan tambahkannya pada projek anda. Apabila bilangan cip peta meningkat, tetapan menjadi menyusahkan, jadi kali ini kami telah menyediakan hanya dua petak, satu yang boleh berjalan dan satu yang tidak boleh berjalan.

Pilih imej yang anda tambahkan pada projek anda dan konfigurasikan tetapan untuk MapChips. Lihat petua berikut untuk maklumat lanjut:

Setelah dikonfigurasikan, klik butang Guna dan kemudian butang Editor Sprite.

Bahagikan dengan 32 piksel.

Pilih tab palet Jubin untuk mencipta palet. Jika tiada tab, anda boleh memaparkannya dari menu dengan "Tetingkap > 2D -> Palet Jubin". Nama palet boleh jadi apa sahaja, tetapi di sini ia adalah "MapChipPalette".

Oleh kerana kami akan menyimpannya dalam folder, buat folder "MapChipPalette" baru dalam folder Scene dan nyatakannya.

Folder MapChipPalette telah ditambahkan pada projek.

Seterusnya, anda akan menambah Petua Peta pada palet. Seret dan lepaskan imej petua peta pisah ke palet.

Petua Peta telah ditambahkan pada palet.

Buat peta

Ketepikan tetapan pengesanan hit dan buat peta terlebih dahulu. Anda boleh menyediakan pengesanan hit kemudian. Mula-mula, tambahkan peta jubin pada hierarki anda.

Setelah ditambah, pilih Peta jubin. Pandangan memaparkan grid.

Mula-mula, tetapkan mapchip yang tidak menjadi dinding dalam pandangan.

Buat masa ini, saya meletakkannya di seluruh tempat.

Seterusnya, letakkan hujung peta batu yang akan berfungsi sebagai dinding.

Kali ini tidak ada masalah, tetapi jika watak anda akan berada di belakang peta, tetapkan Layer Order kepada nombor yang lebih besar daripada Tilemap.

Sudah tentu, walaupun anda memindahkan permainan pada ketika ini, anda akan tergelincir melalui dinding dan berjalan.

Tetapan pengesanan hit MapChip

Dari sini, kami akan menetapkan sama ada untuk memasukkan penghakiman hit untuk setiap jenis cip peta. Mula-mula, buka folder "MapChipPalette" yang anda buat semasa anda mencipta palet.

Terdapat petua peta yang ditetapkan dalam palet di dalamnya, jadi mula-mula pilih petua peta yang boleh anda lalui.

Daripada Pemeriksa, setkan nilai Jenis Collider kepada Tiada. Kemudian, anda akan menambah tetapan pengesanan perlanggaran ke Tilemap, tetapi menetapkannya kepada "Tiada" akan menghalang mapchip ini daripada bertembung.

Petua peta batu yang lain disetkan kepada "Grid". Oleh kerana ia bukan maptip telus kali ini, tidak ada masalah dengan "sprite", tetapi jika anda menetapkannya kepada "sprite", ia tidak akan dinilai dengan memukul bahagian telus imej.

Itu sahaja yang ada pada MapTip. Ia mudah kerana terdapat hanya dua daripadanya kali ini, tetapi jika anda mempunyai sejumlah besar cip peta, anda perlu menetapkannya banyak.

Tetapan Pengesanan Perlanggaran

Dari sini, ia hampir sama dengan kandungan "Melaksanakan pengesanan hit dengan peta jubin".

Pertama, buat tetapan yang diperlukan untuk pengesanan perlanggaran watak. Tambah "Fizik 2D -> Circle Collider 2D" sebagai komponen. Kali ini, sprite adalah bulat, jadi saya menjadikannya bulatan, tetapi sila pilih Kotak atau Kapsul mengikut bentuk.

Kami juga akan menambah "Fizik 2D -> Rigidbody 2D".

Tetapkan skala graviti kepada 0 untuk mengelakkan graviti daripada jatuh ke bawah. Juga, periksa Z untuk "Betulkan putaran" untuk mengelakkan sprite berputar.

Untuk Tilemap, tambah jubin -> Tilemap Collider 2D komponen.

Anda dapat melihat bahawa garis hijau telah ditambah di sekitar hujung peta batu dalam pandangan. Ini bermakna pengesanan hit hanya ditetapkan untuk batu. Anda boleh melihat bahawa seting jenis collider bagi petua peta dalam palet di atas ditunjukkan.

Cuba jalankan permainan dan berjalan ke arah dinding. Saya fikir anda boleh memastikan bahawa watak berhenti di hadapan dinding dengan betul. Anda dapat melihat bahawa ia dapat dilaksanakan dengan mudah tanpa menulis sebarang program yang berkaitan dengan pengesanan hit.

Menggabungkan pengesanan hit MapChip

Seperti yang dinyatakan dalam petua di bawah, apabila anda benar-benar memindahkannya, tingkah laku pengesanan hit dinding agak pelik. Punca dan penyelesaian diterangkan dalam Petua di bawah.

Walau bagaimanapun, dengan menggabungkan bahagian pengesanan hit cip peta, tingkah laku pelik akan diperbetulkan dan beban pemprosesan akan dikurangkan pada masa yang sama, jadi mari kita lakukannya sekurang-kurangnya.

Mula-mula, semak "Gunakan dalam komposit" dalam Tilemap Collider 2D.

Di bawah Tambah Komponen, pilih Fizik 2D -> Kollider Komposit 2D.

"2D tegar" juga akan ditambah, jadi buat "Jenis Badan" kepada "Statik".

Kemudian, saya fikir anda boleh mengesahkan bahawa penghakiman hit batu itu bukan untuk setiap cip peta dan digabungkan.

Sekarang jalankan permainan dan pastikan ia berfungsi dengan betul.