Implémenter la détection des succès pour chaque type de MapChip

Page mise à jour :
Date de création de la page :

Environnement de vérification

Windows
  • Fenêtres 11
Éditeur Unity
  • 2021.3.3f1
Package système d’entrée
  • 1.3.0

Conditions préalables à cette astuce

Les paramètres suivants ont été définis à l’avance comme prémisse pour la description de cette astuce.

Quelles sont les conditions préalables à cette astuce ?

À propos de l’emprunt de matériel cartographique

Nous traitons les emprunts sur les sites suivants.

Au début

Cette fois, les MapChips sont placés dans un TileMap, et il est décidé d’effectuer ou non la détermination des coups en fonction du type de MapTip placé.

Étant donné que cette astuce est en grande partie la même qu’une autre astuce « Implémenter la détection des impacts avec des tilemaps », Veuillez vous y référer pour une explication détaillée. Ici, seule la procédure est expliquée pour le même contenu, et seules les différences sont ajoutées.

Mise en œuvre de personnages ambulants

Tout d’abord, préparez une image de sprite que le joueur contrôlera pour effectuer l’opération de détection de hit et l’ajouter à votre projet. Cette fois, la taille de la pointe est de 32 pixels, je vais donc faire l’image de la même taille.

J’omettrai cette fois l’animation de marche car la procédure sera longue si elle est mise en œuvre. Si vous souhaitez l’implémenter, veuillez vous référer aux conseils suivants.

Sélectionnez l’image que vous avez ajoutée à votre projet. Puisque nous voulons faire correspondre l’unité avec la puce de carte, définissez le « Nombre de pixels par unité » sur « 32 ».

Une fois configuré, cliquez sur le bouton « Appliquer » ci-dessous.

Une fois l’image définie, déposez-la dans la vue et ajoutez l’objet.

Définissez le processus de mouvement du personnage. Ajoutez le script et laissez-le nommé Player .

Le script ressemble à ceci : Il s’agit d’un processus de mouvement simple qui déplace le sprite avec le clavier.

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

Le script que vous créez est attaché à l’objet character.

Lancez le jeu et vérifiez si le personnage se déplace avec le clavier.

Préparation de MapTips

Préparez une image de maptip et ajoutez-la à votre projet. Au fur et à mesure que le nombre de puces de carte augmente, le réglage devient gênant, donc cette fois, nous n’avons préparé que deux carrés, un qui peut être parcouru et un qui ne peut pas marcher.

Sélectionnez les images que vous avez ajoutées à votre projet et configurez les paramètres de MapChips. Consultez les conseils suivants pour plus d’informations :

Une fois configuré, cliquez sur le bouton Appliquer, puis sur le bouton Sprite Editor.

Divisez par 32 pixels.

Sélectionnez l’onglet Palette de vignettes pour créer une palette. S’il n’y a pas d’onglets, vous pouvez les afficher à partir du menu avec « Fenêtre > palette de tuiles 2D -> ». Le nom de la palette peut être n’importe quoi, mais ici c’est « MapChipPalette ».

Puisque nous allons l’enregistrer dans un dossier, créez un nouveau dossier « MapChipPalette » dans le dossier Scène et spécifiez-le.

Un dossier MapChipPalette a été ajouté au projet.

Ensuite, vous allez ajouter MapTips à la palette. Faites glisser et déposez l’image de maptip fractionnée sur la palette.

MapTips a été ajouté à la palette.

Créer une carte

Laissez les paramètres de détection des succès de côté et créez d’abord la carte. Vous pouvez configurer la détection des succès ultérieurement. Tout d’abord, ajoutez un tilemap à votre hiérarchie.

Une fois ajouté, sélectionnez Tilemap. La vue affiche une grille.

Tout d’abord, définissez une puce cartographique qui ne devient pas un mur dans la vue.

Pour l’instant, je l’ai posé partout.

Ensuite, placez la pointe de la carte en pierre qui servira de mur.

Cette fois, il n’y avait pas de problème, mais si votre personnage doit être derrière la carte, définissez l’ordre des couches sur un nombre plus grand que Tilemap.

Bien sûr, même si vous déplacez le jeu à ce stade, vous vous glisserez à travers le mur et marcherez.

Paramètres de détection des succès MapChip

À partir de là, nous déterminerons s’il faut entrer un jugement de frappe pour chaque type de puce de carte. Tout d’abord, ouvrez le dossier « MapChipPalette » que vous avez créé lorsque vous avez créé la palette.

Il y a un ensemble de maptip dans la palette à l’intérieur, alors sélectionnez d’abord un maptip sur lequel vous pouvez marcher.

Dans l’inspecteur, définissez la valeur Type de collisionneur sur Aucun. Plus tard, vous ajouterez un paramètre de détection de collision à Tilemap, mais le définir sur « Aucun » empêchera cette puce de carte d’entrer en collision.

L’autre maptip de pierre est réglé sur « Grille ». Comme il ne s’agit pas d’une info-bulle transparente cette fois, il n’y a pas de problème avec « sprite », mais si vous le définissez sur « sprite », il ne sera pas jugé en frappant la partie transparente de l’image.

C’est tout ce qu’il y a à MapTip. C’est facile parce qu’il n’y en a que deux cette fois, mais si vous avez un grand nombre de puces de carte, vous devez en définir autant.

Paramètres de détection de collision

À partir de là, c’est presque le même que le contenu de « Implémenter la détection de succès avec tilemap ».

Tout d’abord, définissez les paramètres nécessaires pour la détection des collisions de personnages. Ajoutez « Physics 2D -> Circle Collider 2D » en tant que composant. Cette fois, le sprite est rond, j’en ai donc fait un cercle, mais veuillez sélectionner Box ou Capsule en fonction de la forme.

Nous ajouterons également « Physique 2D -> Rigidbody 2D ».

Réglez l’échelle de gravité sur 0 pour empêcher la gravité de tomber. Vérifiez également Z pour « Fixer la rotation » pour empêcher le sprite de tourner.

Pour Tilemap, ajoutez le composant Tilemap -> Tilemap Collider 2D.

Vous pouvez voir qu’une ligne verte a été ajoutée autour de la pointe de la carte de pierre dans la vue. Cela signifie que la détection des coups n’est définie que pour les pierres. Vous pouvez voir que le paramètre de type collisionneur de la pointe de la carte dans la palette ci-dessus est reflété.

Essayez de lancer le jeu et de marcher vers le mur. Je pense que vous pouvez vous assurer que le personnage s’arrête correctement devant le mur. Vous pouvez voir qu’il peut être facilement implémenté sans écrire de programmes liés à la détection des hits.

Combinaison de la détection des coups MapChip

Comme mentionné dans les conseils ci-dessous, lorsque vous le déplacez réellement, le comportement de la détection des coups muraux est un peu étrange. La cause et la solution de contournement sont décrites dans les conseils ci-dessous.

Cependant, en combinant la partie détection de succès de la puce cartographique, le comportement étrange sera corrigé et la charge de traitement sera réduite en même temps, alors faisons-le au minimum.

Tout d’abord, cochez « Utilisation en composite » dans Tilemap Collider 2D.

Sous Ajouter un composant, sélectionnez Physique 2D -> Collisionneur composite 2D.

« Rigidbody 2D » sera également ajouté, alors faites « Body Type » à « Static ».

Ensuite, je pense que vous pouvez confirmer que le jugement de frappe de la pierre n’est pas pour chaque puce de carte et est combiné.

Maintenant, exécutez le jeu et assurez-vous qu’il fonctionne correctement.