Trāpījumu noteikšanas ieviešana katram MapChip veidam

Lapa atjaunota :
Lapas izveides datums :

Verifikācijas vide

Windows
  • Operētājsistēmā Windows 11
Vienotības redaktors
  • 2021.3.3f1
Ievades sistēmas pakete
  • 1.3.0

Priekšnoteikumi šim padomam

Tālāk norādītie iestatījumi ir veikti iepriekš kā priekšnoteikums šī padoma aprakstam.

Kādi ir šī padoma priekšnoteikumi?

Par aizņemšanos kartes materiāli

Mēs apstrādājam aizņemtos no šādām vietnēm.

Sākumā

Šoreiz MapChips tiek ievietots vienā TileMap, un tiek izlemts, vai veikt trāpījumu noteikšanu atbilstoši ievietotā MapTip tipam.

Tā kā šis padoms lielā mērā ir tāds pats kā cits padoms "Ieviest trāpījumu noteikšanu ar flīžu kartēm", Lūdzu, skatiet tur detalizētu skaidrojumu. Šeit tam pašam saturam ir izskaidrota tikai procedūra, un tiek pievienotas tikai atšķirības.

Pastaigu rakstzīmju īstenošana

Vispirms sagatavojiet sprite attēlu, kuru spēlētājs kontrolēs, lai veiktu trāpījumu noteikšanas darbību, un pievienojiet to savam projektam. Šoreiz kartes gala izmērs ir 32 pikseļi, tāpēc attēlu padarīšu tādu pašu izmēru.

Šoreiz izlaidīšu staigāšanas animāciju, jo procedūra būs ilga, ja tā tiks īstenota. Ja vēlaties to ieviest, lūdzu, skatiet šādus padomus.

Atlasiet attēlu, ko pievienojāt savam projektam. Tā kā mēs vēlamies saskaņot ierīci ar kartes mikroshēmu, iestatiet "Pikseļu skaitu uz vienību" uz "32".

Pēc konfigurēšanas noklikšķiniet uz zemāk esošās pogas "Lietot".

Kad attēls ir iestatīts, nometiet attēlu skatā un pievienojiet objektu.

Iestatiet rakstzīmes kustības procesu. Pievienojiet skriptu un atstājiet to ar nosaukumu Player .

Skripts izskatās šādi: Tas ir vienkāršs kustības process, kas pārvieto sprite ar tastatūru.

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

Izveidotais skripts tiek pievienots rakstzīmes objektam.

Palaidiet spēli un pārbaudiet, vai rakstzīme pārvietojas ar tastatūru.

Kartes padomu sagatavošana

Sagatavojiet kartes padoma attēlu un pievienojiet to savam projektam. Pieaugot karšu mikroshēmu skaitam, iestatīšana kļūst apgrūtinoša, tāpēc šoreiz esam sagatavojuši tikai divus kvadrātus, vienu, ko var staigāt, un vienu, kas nevar staigāt.

Atlasiet attēlus, kurus pievienojāt savam projektam, un konfigurējiet MapChips iestatījumus. Lai iegūtu papildinformāciju, skatiet tālāk sniegtos padomus.

Pēc konfigurēšanas noklikšķiniet uz pogas Lietot un pēc tam uz pogas Sprite Editor.

Sadaliet ar 32 pikseļiem.

Atlasiet cilni Mozaīkas elementu palete, lai izveidotu paleti. Ja nav cilņu, varat tos parādīt izvēlnē ar "Window > 2D -> Flīžu palete". Paletes nosaukums var būt jebkas, bet šeit tas ir "MapChipPalette".

Tā kā mēs to saglabāsim mapē, izveidojiet jaunu mapi "MapChipPalette" mapē Aina un norādiet to.

Projektam ir pievienota mape MapChipPalette.

Pēc tam paletei pievienosit kartes padomus. Velciet un nometiet sadalītā kartes padoma attēlu paletē.

Paletei ir pievienoti kartes padomi.

Kartes izveide

Atstājiet trāpījumu noteikšanas iestatījumus malā un vispirms izveidojiet karti. Trāpījumu noteikšanu varat iestatīt vēlāk. Vispirms pievienojiet elementu karti savai hierarhijai.

Pēc pievienošanas atlasiet Mozaīkas karte. Skatā tiek parādīts režģis.

Vispirms iestatiet kartes mikroshēmu, kas skatā nekļūst par sienu.

Pagaidām es to visu noliku pa visu vietu.

Pēc tam novietojiet akmens kartes galu, kas kalpos kā siena.

Šoreiz nebija problēmu, bet, ja jūsu rakstzīme atradīsies aiz kartes, iestatiet slāņu secību uz numuru, kas ir lielāks par Tilemap.

Protams, pat ja jūs šajā brīdī pārvietojat spēli, jūs izslīdēsit caur sienu un staigāsit.

MapChip trāpījumu noteikšanas iestatījumi

No šejienes mēs iestatīsim, vai ievadīt trāpījumu spriedumu katram kartes mikroshēmas veidam. Vispirms atveriet mapi "MapChipPalette", kuru izveidojāt, izveidojot paleti.

Paletē iekšpusē ir iestatīts kartes padoms, tāpēc vispirms atlasiet kartes padomu, pa kuru varat staigāt.

No inspektora iestatiet Collider Type vērtību Nav. Vēlāk Tilemap pievienosit sadursmes noteikšanas iestatījumu, taču, iestatot to uz "Nav", šī kartes mikroshēma nevarēs sadurties.

Otrs akmens kartes tips ir iestatīts uz "Režģis". Tā kā šoreiz tas nav caurspīdīgs kartes tips, ar "sprite" nav problēmu, bet, ja jūs to iestatāt uz "sprite", tas netiks vērtēts, nospiežot attēla caurspīdīgo daļu.

Tas ir viss, kas ir kartes tipam. Tas ir viegli, jo šoreiz ir tikai divi no tiem, bet, ja jums ir liels skaits karšu mikroshēmu, jums tas ir jāiestata.

Sadursmes noteikšanas iestatījumi

No šejienes tas ir gandrīz tāds pats kā "Implement hit detection with tilemap" saturs.

Vispirms veiciet nepieciešamos iestatījumus rakstzīmju sadursmes noteikšanai. Kā komponentu pievienojiet "Physics 2D -> Circle Collider 2D". Šoreiz sprite ir apaļa, tāpēc es to izveidoju par Apli, bet, lūdzu, izvēlieties Kaste vai Kapsula atbilstoši formai.

Mēs arī pievienosim "Physics 2D -> Rigidbody 2D".

Iestatiet gravitācijas skalu uz 0, lai novērstu smaguma nokrišanu. Pārbaudiet arī Z, lai "Labotu rotāciju", lai novērstu sprite rotāciju.

Elementa kartei pievienojiet elementu karti > Tilemap Collider 2D komponentu.

Var redzēt, ka ap akmens kartes galu skatā ir pievienota zaļa līnija. Tas nozīmē, ka trāpījumu noteikšana ir iestatīta tikai akmeņiem. Jūs varat redzēt, ka iepriekš redzamajā paletē ir atspoguļots kartes tipa Collider tipa iestatījums.

Mēģiniet palaist spēli un iet uz sienu. Es domāju, ka jūs varat pārliecināties, ka raksturs apstājas sienas priekšā pareizi. Jūs varat redzēt, ka to var viegli īstenot, nerakstot nekādas programmas, kas saistītas ar trāpījumu noteikšanu.

MapChip trāpījumu noteikšanas apvienošana

Kā minēts tālāk sniegtajos padomos, kad jūs to faktiski pārvietojat, sienas trāpījuma noteikšanas uzvedība ir nedaudz dīvaina. Cēlonis un risinājums ir aprakstīts tālāk sniegtajos padomos.

Tomēr, apvienojot kartes mikroshēmas trāpījumu noteikšanas daļu, dīvainā uzvedība tiks labota un apstrādes slodze vienlaikus tiks samazināta, tāpēc darīsim to vismaz.

Vispirms pārbaudiet "Lietot kompozītmateriālā" Tilemap Collider 2D.

Sadaļā Pievienot komponentu atlasiet Fizika 2D-> Composite Collider 2D.

Tiks pievienots arī "Rigidbody 2D", tāpēc izveidojiet "Body Type" uz "Static".

Tad, es domāju, jūs varat apstiprināt, ka akmens trāpījums nav par katru kartes mikroshēmu un ir apvienots.

Tagad palaidiet spēli un pārliecinieties, vai tā darbojas pareizi.