Implementare il rilevamento dei colpi per ogni tipo di MapChip

Pagina aggiornata :
Data di creazione della pagina :

Ambiente di verifica

Finestre
  • Windows 11
Unity Editor
  • 2021.3.3f1
Pacchetto del sistema di input
  • 1.3.0

Prerequisiti per questo suggerimento

Le seguenti impostazioni sono state effettuate in anticipo come premessa per la descrizione di questo suggerimento.

Quali sono i prerequisiti per questo suggerimento?

Informazioni sul prestito di materiali cartografici

Elaboriamo preso in prestito dai seguenti siti.

Dapprima

Questa volta, i MapChip vengono inseriti in una TileMap e viene deciso se eseguire la determinazione dei colpi in base al tipo di MapTip posizionato.

Poiché questo suggerimento è in gran parte lo stesso di un altro suggerimento "Implementa il rilevamento dei colpi con tilemaps", Si prega di fare riferimento a lì per una spiegazione dettagliata. Qui, viene spiegata solo la procedura per lo stesso contenuto e vengono aggiunte solo le differenze.

Implementazione di caratteri ambulanti

Per prima cosa, prepara un'immagine sprite che il giocatore controllerà per eseguire l'operazione di rilevamento dei colpi e aggiungerla al tuo progetto. Questa volta, la dimensione del maptip è di 32 pixel, quindi renderò l'immagine della stessa dimensione.

Questa volta ometterò l'animazione a piedi perché la procedura sarà lunga se verrà implementata. Se si desidera implementarlo, si prega di fare riferimento ai seguenti suggerimenti.

Selezionare l'immagine aggiunta al progetto. Poiché vogliamo abbinare l'unità con il chip della mappa, impostare il "Numero di pixel per unità" su "32".

Una volta configurato, fai clic sul pulsante "Applica" qui sotto.

Una volta impostata l'immagine, rilasciala nella vista e aggiungi l'oggetto.

Imposta il processo di movimento del personaggio. Aggiungere lo script e lasciare il nome Player .

Lo script è simile al seguente: Questo è un semplice processo di movimento che muove lo sprite con la tastiera.

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

Lo script creato viene collegato all'oggetto carattere.

Esegui il gioco e controlla se il personaggio si muove con la tastiera.

Preparazione dei suggerimenti mappa

Preparare un'immagine maptip e aggiungerla al progetto. Con l'aumentare del numero di chip della mappa, l'impostazione diventa problematica, quindi questa volta abbiamo preparato solo due quadrati, uno che può essere percorso e uno che non può essere camminato.

Selezionare le immagini aggiunte al progetto e configurare le impostazioni per MapChips. Per ulteriori informazioni, vedere i seguenti suggerimenti:

Una volta configurato, fare clic sul pulsante Applica e quindi sul pulsante Sprite Editor.

Dividere per 32 pixel.

Selezionare la scheda Tavolozza Affianca per creare una tavolozza. Se non ci sono schede, puoi visualizzarle dal menu con "Window > 2D -> Tile Palette". Il nome della tavolozza può essere qualsiasi cosa, ma qui è "MapChipPalette".

Poiché lo salveremo in una cartella, creare una nuova cartella "MapChipPalette" nella cartella Scene e specificarla.

Una cartella MapChipPalette è stata aggiunta al progetto.

Successivamente, aggiungerai MapTips alla tavolozza. Trascinare e rilasciare l'immagine della mappa divisa sulla tavolozza.

I mapTip sono stati aggiunti alla tavolozza.

Creare una mappa

Lascia da parte le impostazioni di rilevamento dei colpi e crea prima la mappa. Puoi impostare il rilevamento dei colpi in un secondo momento. Innanzitutto, aggiungi una tilemap alla tua gerarchia.

Una volta aggiunto, seleziona Tilemap. Nella vista viene visualizzata una griglia.

Innanzitutto, imposta un mapchip che non diventi un muro nella vista.

Per il momento, l'ho posato dappertutto.

Quindi, posiziona la mappa di pietra che fungerà da muro.

Questa volta non ci sono stati problemi, ma se il tuo personaggio sarà dietro la mappa, imposta l'ordine dei livelli su un numero maggiore di Tilemap.

Naturalmente, anche se sposti il gioco a questo punto, scivolerai attraverso il muro e camminerai.

Impostazioni di rilevamento dei riscontri MapChip

Da qui, imposteremo se inserire un giudizio di hit per ogni tipo di chip della mappa. Innanzitutto, apri la cartella "MapChipPalette" creata quando hai creato la tavolozza.

C'è un maptip impostato nella tavolozza all'interno, quindi prima seleziona un maptip su cui puoi camminare.

Da Inspector, impostare il valore Tipo collisore su Nessuno. Successivamente, aggiungerai un'impostazione di rilevamento delle collisioni a Tilemap, ma impostandola su "Nessuno" impedirai a questo mapchip di collidere.

L'altra mappa di pietra è impostata su "Griglia". Poiché questa volta non è un maptip trasparente, non ci sono problemi con "sprite", ma se lo imposti su "sprite", non verrà giudicato colpendo la parte trasparente dell'immagine.

Questo è tutto ciò che c'è da MapTip. È facile perché ce ne sono solo due questa volta, ma se hai un gran numero di chip di mappa, devi impostare così tanto.

Impostazioni di rilevamento delle collisioni

Da qui, è quasi lo stesso del contenuto di "Implementa il rilevamento dei colpi con tilemap".

Innanzitutto, effettuare le impostazioni necessarie per il rilevamento delle collisioni tra caratteri. Aggiungi "Physics 2D -> Circle Collider 2D" come componente. Questa volta, lo sprite è rotondo, quindi l'ho reso un cerchio, ma per favore seleziona Box o Capsule in base alla forma.

Aggiungeremo anche "Fisica 2D -> Rigidbody 2D".

Impostare la scala di gravità su 0 per evitare che la gravità cada. Inoltre, seleziona Z per "Fix rotation" per impedire allo sprite di ruotare.

Per Tilemap, aggiungere il componente Tilemap -> Tilemap Collider 2D.

Puoi vedere che è stata aggiunta una linea verde intorno alla mappa di pietra nella vista. Ciò significa che il rilevamento dei colpi è impostato solo per le pietre. È possibile vedere che l'impostazione del tipo di collisore della punta mappa nella tavolozza sopra viene riflessa.

Prova a correre il gioco e cammina verso il muro. Penso che tu possa assicurarti che il personaggio si fermi correttamente davanti al muro. Puoi vedere che può essere facilmente implementato senza scrivere alcun programma relativo al rilevamento dei colpi.

Combinazione del rilevamento dei colpi MapChip

Come accennato nei suggerimenti seguenti, quando lo si sposta effettivamente, il comportamento del rilevamento dei colpi di muro è un po 'strano. La causa e la soluzione alternativa sono descritte nei suggerimenti riportati di seguito.

Tuttavia, combinando la parte di rilevamento dei colpi del chip della mappa, lo strano comportamento verrà corretto e il carico di elaborazione verrà ridotto allo stesso tempo, quindi facciamolo come minimo.

Innanzitutto, seleziona "Usa in composito" in Tilemap Collider 2D.

In Aggiungi componente, selezionare Physics 2D -> Composite Collider 2D.

Verrà aggiunto anche "Rigidbody 2D", quindi trasforma "Body Type" in "Static".

Quindi, penso che tu possa confermare che il giudizio del colpo della pietra non è per ogni chip della mappa ed è combinato.

Ora esegui il gioco e assicurati che funzioni correttamente.