Implementar la detecció de peticions de fitxer per a cada tipus de MapChip
Entorn de verificació
- Windows
-
- Finestres 11
- Editor d'unitat
-
- 2021.3.3f1
- Paquet del sistema d'entrada
-
- 1.3.0
Requisits previs per a aquest consell
La configuració següent s'ha fet amb antelació com a premissa per a la descripció d'aquest consell.
Quins són els requisits previs per a aquest consell?
- Creeu un mapa 2D de dalt a baix mitjançant mapes de rajoles Unity estàndard
- Maneig de col·lisions amb física estàndard (2D)
- Implementar la detecció de peticions de fitxer amb tilemaps
Sobre el préstec de materials cartogràfics
Tramitem prestats en els següents llocs.
Al principi
Aquesta vegada, els MapChips es col·loquen en un TileMap, i es decideix si es realitza la determinació de cops segons el tipus de MapTip col·locat.
Com que aquest consell és en gran mesura el mateix que un altre Consell "Implementeu la detecció de peticions de fitxer amb mapes de rajoles", Consulteu allà per obtenir una explicació detallada. Aquí només s'explica el procediment per al mateix contingut i només s'afegeixen les diferències.
Implementació de personatges caminants
Primer, prepareu una imatge de sprite que el reproductor controlarà per realitzar l'operació de detecció de peticions de fitxer i afegir-la al vostre projecte. Aquesta vegada, la mida del maptip és de 32 píxels, així que faré que la imatge tingui la mateixa mida.
Ometré l'animació de caminar aquesta vegada perquè el procediment serà llarg si s'implementa. Si voleu implementar-lo, consulteu els consells següents.
Selecciona la imatge que has afegit al projecte. Com que volem fer coincidir la unitat amb el xip del mapa, establiu el "Nombre de píxels per unitat" a "32".
Un cop configurat, feu clic al botó "Aplica" a continuació.
Un cop configurada la imatge, deixeu anar la imatge a la vista i afegiu l'objecte.
Estableix el procés de moviment del personatge. Afegiu l'script i deixeu-lo anomenat Player
.
El guió té aquest aspecte: Aquest és un procés de moviment senzill que mou l'sprite amb el teclat.
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);
}
}
}
L'script que creeu s'adjunta a l'objecte caràcter.
Executeu el joc i comproveu si el personatge es mou amb el teclat.
Preparació de MapTips
Prepareu una imatge de maptip i afegiu-la al vostre projecte. A mesura que augmenta el nombre de fitxes de mapes, la configuració es torna problemàtica, de manera que aquesta vegada només hem preparat dues places, una que es pot caminar i una altra que no pot caminar.
Seleccioneu les imatges que heu afegit al vostre projecte i configureu els paràmetres de MapChips. Consulteu els següents consells per obtenir més informació:
Un cop configurat, feu clic al botó Aplica i, a continuació, al botó Editor de personatges.
Dividir per 32 píxels.
Seleccioneu la pestanya Mosaic de la paleta per crear una paleta. Si no hi ha pestanyes, podeu mostrar-les des del menú amb "Window > 2D -> Tile Palette". El nom de la paleta pot ser qualsevol cosa, però aquí és "MapChipPalette".
Com que el guardarem en una carpeta, creeu una nova carpeta "MapChipPalette" a la carpeta Escena i especifiqueu-la.
S'ha afegit una carpeta MapChipPalette al projecte.
A continuació, afegireu MapTips a la paleta. Arrossegueu i deixeu anar la imatge dividida del maptip a la paleta.
S'han afegit MapTips a la paleta.
Crear un mapa
Deixeu de banda la configuració de detecció de peticions de fitxer i creeu primer el mapa. Podeu configurar la detecció de peticions de fitxer més endavant. En primer lloc, afegiu un mapa de mosaics a la vostra jerarquia.
Un cop afegit, seleccioneu Tilemap. La vista mostra una quadrícula.
En primer lloc, establiu un mapchip que no es converteixi en una paret a la vista.
De moment, l'he posat per tot arreu.
A continuació, col·loqueu el maptip de pedra que servirà de paret.
Aquesta vegada no hi va haver cap problema, però si el vostre personatge estarà darrere del mapa, establiu l'ordre de capes a un número més gran que Tilemap.
Per descomptat, fins i tot si moveu el joc en aquest punt, relliscareu per la paret i caminareu.
Configuració de detecció de peticions de fitxer de MapChip
A partir d'aquí, establirem si cal emetre un judici per a cada tipus de xip de mapa. En primer lloc, obriu la carpeta "MapChipPalette" que vau crear en crear la paleta.
Hi ha un maptip establert a la paleta interior, així que primer seleccioneu un maptip que pugueu caminar.
Des de l'Inspector, definiu el valor Tipus de col·lisionador a Cap. Més endavant, afegireu una configuració de detecció de col·lisions a Tilemap, però establir-la a "Cap" evitarà que aquest mapchip xoqui.
L'altre maptip de pedra està establert a "Quadrícula". Com que aquesta vegada no és un maptip transparent, no hi ha cap problema amb "sprite", però si el configureu a "sprite", no es jutjarà colpejant la part transparent de la imatge.
Això és tot el que hi ha a MapTip. És fàcil perquè aquesta vegada només n'hi ha dos, però si teniu un gran nombre de fitxes de mapes, heu de configurar-ne molt.
Configuració de detecció de col·lisions
A partir d'aquí, és gairebé el mateix que el contingut de "Implementar la detecció de peticions de fitxer amb tilemap".
En primer lloc, feu la configuració necessària per a la detecció de col·lisions de caràcters. Afegiu "Physics 2D-> Circle Collider 2D" com a component. Aquesta vegada, l'sprite és rodó, així que el vaig fer un cercle, però seleccioneu Caixa o càpsula segons la forma.
També afegirem "Física 2D -> Rigidbody 2D".
Establiu l'escala de gravetat a 0 per evitar que la gravetat caigui. A més, comproveu Z si hi ha "Corregeix la rotació" per evitar que l'sprite giri.
Per a Tilemap, afegiu el component 2D Tilemap -> Tilemap Collider.
Podeu veure que s'ha afegit una línia verda al voltant del maptip de pedra a la vista. Això vol dir que la detecció de cops només s'estableix per a les pedres. Podeu veure que la configuració del tipus de col·lisionador del maptip de la paleta anterior es reflecteix.
Proveu d'executar el joc i caminar cap a la paret. Crec que es pot assegurar que el personatge s'atura davant de la paret correctament. Podeu veure que es pot implementar fàcilment sense escriure cap programa relacionat amb la detecció de peticions de fitxer.
Combinant la detecció de peticions de fitxer de MapChip
Com es va esmentar als consells següents, quan realment el moveu, el comportament de detecció de cops de paret és una mica estrany. La causa i la solució temporal es descriuen als consells següents.
Tanmateix, combinant la part de detecció de peticions de fitxer del xip del mapa, es corregirà el comportament estrany i es reduirà la càrrega de processament alhora, així que fem-ho com a mínim.
En primer lloc, marqueu "Ús en composite" a Tilemap Collider 2D.
A Afegeix component, seleccioneu Física 2D -> Col·lisionador compost 2D.
També s'afegirà "Rigidbody 2D", així que feu "Tipus de cos" a "Estàtic".
Llavors, crec que es pot confirmar que el judici d'encert de la pedra no és per a cada xip de mapa i es combina.
Ara executeu el joc i assegureu-vos que funciona correctament.