Implementer registrering af hit for hver type MapChip
Miljø til bekræftelse
- Windows
-
- Windows 11
- Enhedslistens redaktør
-
- 2021.3.3f1
- Input System Pakke
-
- 1.3.0
Forudsætninger for dette tip
Følgende indstillinger er foretaget på forhånd som en forudsætning for beskrivelsen af dette tip.
Hvad er forudsætningerne for dette tip?
- Opret et top-down 2D-kort ved hjælp af standard Unity-flisekort
- Kollisionshåndtering med standardfysik (2D)
- Implementer registrering af hit med tilemaps
Om lån af kortmaterialer
Vi behandler lånt fra følgende sider.
Først
Denne gang placeres MapChips i ét TileMap, og det besluttes, om der skal udføres hitbestemmelse i henhold til den placerede type MapTip.
Da dette tip stort set er det samme som et andet tip "Implementer hitdetektion med tilemaps", Se venligst der for en detaljeret forklaring. Her forklares kun proceduren for det samme indhold, og kun forskellene tilføjes.
Implementering af walking tegn
Først skal du forberede et sprite-billede, som afspilleren vil kontrollere for at udføre hitdetekteringsoperationen og føje det til dit projekt. Denne gang er størrelsen på korttippet 32 pixels, så jeg vil gøre billedet i samme størrelse.
Jeg vil udelade ganganimationen denne gang, fordi proceduren vil være lang, hvis den implementeres. Hvis du vil implementere det, henvises til følgende tip.
Vælg det billede, du har føjet til projektet. Da vi vil matche enheden med kortchippen, skal du indstille "Antal pixels pr. Enhed" til "32".
Når du er konfigureret, skal du klikke på knappen "Anvend" nedenfor.
Når billedet er indstillet, skal du slippe billedet i visningen og tilføje objektet.
Indstil karakterens bevægelsesproces. Tilføj scriptet, og lad det hedde Player
.
Scriptet ser sådan ud: Dette er en simpel bevægelsesproces, der bevæger sprite med tastaturet.
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);
}
}
}
Det script, du opretter, knyttes til tegnobjektet.
Kør spillet og kontroller, om karakteren bevæger sig med tastaturet.
Forberedelse af korttips
Forbered et billede med korttip, og føj det til projektet. Efterhånden som antallet af kortchips stiger, bliver indstillingen besværlig, så denne gang har vi kun forberedt to firkanter, en der kan gås og en der ikke kan gå.
Vælg de billeder, du har føjet til projektet, og konfigurer indstillingerne for MapChips. Se følgende tip for at få flere oplysninger:
Når du er konfigureret, skal du klikke på knappen Anvend og derefter på knappen Sprite Editor.
Divider med 32 pixels.
Vælg fanen Feltpalet for at oprette en palet. Hvis der ikke er nogen faner, kan du vise dem fra menuen med "Window > 2D -> Tile Palette". Paletnavnet kan være hvad som helst, men her er det "MapChipPalette".
Da vi gemmer den i en mappe, skal du oprette en ny "MapChipPalette" -mappe i mappen Scene og angive den.
Der er føjet en MapChipPalette-mappe til projektet.
Derefter skal du føje MapTips til paletten. Træk og slip det delte maptipbillede på paletten.
MapTips er blevet føjet til paletten.
Opret et kort
Lad indstillingerne for hitregistrering være til side, og opret kortet først. Du kan konfigurere registrering af hit senere. Først skal du føje et tilemap til dit hierarki.
Når den er tilføjet, skal du vælge Tilemap. Visningen viser et gitter.
Først skal du indstille en mapchip, der ikke bliver en væg i visningen.
Indtil videre lagde jeg det overalt.
Placer derefter stenkortet, der fungerer som væggen.
Denne gang var der ikke noget problem, men hvis din karakter skal være bag kortet, skal du indstille lagrækkefølgen til et tal, der er større end Tilemap.
Selvom du flytter spillet på dette tidspunkt, glider du selvfølgelig gennem væggen og går.
Indstillinger for registrering af MapChip-hit
Herfra indstiller vi, om vi skal indtaste hit-dom for hver type kortchip. Åbn først mappen "MapChipPalette", som du oprettede, da du oprettede paletten.
Der er et korttip i paletten indeni, så vælg først et korttip, som du kan gå på.
Fra inspektøren skal du angive værdien for Collidertype til Ingen. Senere vil du tilføje en kollisionsdetekteringsindstilling til Tilemap, men hvis du indstiller den til "Ingen", forhindres denne mapchip i at kollidere.
Den anden sten maptip er indstillet til "Grid". Da det ikke er et gennemsigtigt maptip denne gang, er der ikke noget problem med "sprite", men hvis du indstiller det til "sprite", bedømmes det ikke ved at trykke på den gennemsigtige del af billedet.
Det er alt, hvad der er til MapTip. Det er nemt, fordi der kun er to af dem denne gang, men hvis du har et stort antal kortchips, skal du indstille så meget.
Indstillinger for kollisionsregistrering
Herfra er det næsten det samme som indholdet af "Implementer hitdetektion med tilemap".
Først skal du foretage de nødvendige indstillinger for registrering af karakterkollision. Tilføj "Fysik 2D -> Circle Collider 2D" som en komponent. Denne gang er spriten rund, så jeg lavede den til en cirkel, men vælg venligst Box eller Capsule i henhold til formen.
Vi vil også tilføje "Fysik 2D -> Rigidbody 2D".
Indstil tyngdekraftsskalaen til 0 for at forhindre tyngdekraften i at falde ned. Kontroller også Z for "Fix rotation" for at forhindre, at sprite roterer.
For Tilemap skal du tilføje komponenten Tilemap -> Tilemap Collider 2D.
Du kan se, at der er tilføjet en grøn linje omkring stenkortspidsen i visningen. Det betyder, at hitregistrering kun er indstillet til sten. Du kan se, at indstillingen af collidertypen for kortspidsen i paletten ovenfor afspejles.
Prøv at køre spillet og gå mod væggen. Jeg tror, du kan sørge for, at karakteren stopper ordentligt foran væggen. Du kan se, at det let kan implementeres uden at skrive nogen programmer relateret til hitdetektion.
Kombination af MapChip-hitregistrering
Som nævnt i nedenstående tip, når du rent faktisk flytter det, er opførelsen af registrering af vægslag lidt mærkelig. Årsagen og løsningen er beskrevet i nedenstående tip.
Men ved at kombinere hitdetekteringsdelen af kortchippen korrigeres den mærkelige opførsel, og behandlingsbelastningen reduceres på samme tid, så lad os gøre det på et minimum.
Kontroller først "Brug i komposit" i Tilemap Collider 2D.
Under Tilføj komponent skal du vælge Fysik 2D -> Composite Collider 2D.
"Rigidbody 2D" vil også blive tilføjet, så gør "Body Type" til "Static".
Derefter tror jeg, du kan bekræfte, at stenens hitdom ikke er for hver kortchip og kombineres.
Kør nu spillet og sørg for, at det fungerer korrekt.