Implemente a detecção de ocorrências para cada tipo de MapChip

Página atualizada :
Data de criação de página :

Ambiente de verificação

Windows
  • Janelas 11
Unity Editor
  • 2021.3.3f1
Pacote do sistema de entrada
  • 1.3.0

Pré-requisitos para esta dica

As configurações a seguir foram feitas com antecedência como premissa para a descrição desta dica.

Quais são os pré-requisitos para essa dica?

Sobre o empréstimo de materiais de mapa

Processamos emprestado dos seguintes sites.

Inicialmente

Desta vez, MapChips são colocados em um TileMap, e é decidido se deve executar a determinação de acerto de acordo com o tipo de MapTip colocado.

Uma vez que esta dica é basicamente a mesma que outra Dica "Implementar detecção de acertos com tilemaps", Por favor, consulte lá para uma explicação detalhada. Aqui, apenas o procedimento é explicado para o mesmo conteúdo, e apenas as diferenças são adicionadas.

Implementação de personagens ambulantes

Primeiro, prepare uma imagem de sprite que o jogador controlará para executar a operação de detecção de acertos e adicione-a ao seu projeto. Desta vez, o tamanho da dica de mapa é de 32 pixels, então vou fazer a imagem do mesmo tamanho.

Vou omitir a animação de caminhada desta vez porque o procedimento será longo se for implementado. Se você quiser implementá-lo, consulte as dicas a seguir.

Selecione a imagem que você adicionou ao seu projeto. Como queremos combinar a unidade com o chip do mapa, defina o "Número de pixels por unidade" como "32".

Uma vez configurado, clique no botão "Aplicar" abaixo.

Depois que a imagem estiver definida, solte-a na exibição e adicione o objeto.

Defina o processo de movimento do personagem. Adicione o script e deixe-o nomeado Player .

O script tem a seguinte aparência: Este é um processo de movimento simples que move o sprite com o teclado.

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

O script criado é anexado ao objeto de caractere.

Execute o jogo e verifique se o personagem se move com o teclado.

Preparando MapTips

Prepare uma imagem de dica de mapa e adicione-a ao seu projeto. À medida que o número de fichas de mapa aumenta, a configuração torna-se problemática, por isso desta vez preparamos apenas dois quadrados, um que pode ser caminhado e outro que não pode andar.

Selecione as imagens que você adicionou ao seu projeto e defina as configurações para MapChips. Consulte as dicas a seguir para obter mais informações:

Depois de configurado, clique no botão Aplicar e, em seguida, no botão Editor de Sprite.

Divida por 32 pixels.

Selecione a guia Paleta de blocos para criar uma paleta. Se não houver abas, você pode exibi-las no menu com "Janela > 2D -> Paleta de blocos". O nome da paleta pode ser qualquer coisa, mas aqui é "MapChipPalette".

Como vamos salvá-lo em uma pasta, crie uma nova pasta "MapChipPalette" na pasta Scene e especifique-a.

Uma pasta MapChipPalette foi adicionada ao projeto.

Em seguida, você adicionará MapTips à paleta. Arraste e solte a imagem da dica de mapa dividida na paleta.

MapTips foram adicionados à paleta.

Criar um mapa

Deixe as configurações de detecção de visitas de lado e crie o mapa primeiro. Você pode configurar a detecção de visitas mais tarde. Primeiro, adicione um mapa de blocos à sua hierarquia.

Depois de adicionado, selecione Tilemap. O modo de exibição exibe uma grade.

Primeiro, defina um mapchip que não se torne uma parede na vista.

Por enquanto, coloquei em todo lugar.

Em seguida, coloque a ponta de pedra que servirá como parede.

Desta vez não houve problema, mas se o seu personagem vai estar atrás do mapa, defina a Ordem das Camadas para um número maior que o Tilemap.

Claro, mesmo se você mover o jogo neste ponto, você vai escorregar através da parede e andar.

Configurações de detecção de visitas do MapChip

A partir daqui, definiremos se devemos inserir julgamento de acerto para cada tipo de chip de mapa. Primeiro, abra a pasta "MapChipPalette" que você criou quando criou a paleta.

Há uma dica de mapa definida na paleta dentro, então primeiro selecione uma dica de mapa na qual você pode caminhar.

No Inspetor, defina o valor Tipo de Colisor como Nenhum. Mais tarde, você adicionará uma configuração de detecção de colisão ao Tilemap, mas defini-la como "Nenhuma" impedirá que esse mapchip colida.

A outra dica de mapa de pedra está definida como "Grid". Como não é uma dica de mapa transparente desta vez, não há nenhum problema com "sprite", mas se você defini-lo como "sprite", ele não será julgado batendo na parte transparente da imagem.

Isso é tudo o que há para MapTip. É fácil porque há apenas dois deles desta vez, mas se você tiver um grande número de fichas de mapa, você precisa definir isso.

Configurações de detecção de colisão

A partir daqui, é quase o mesmo que o conteúdo de "Implementar detecção de batidas com tilemap".

Primeiro, faça as configurações necessárias para a detecção de colisão de caracteres. Adicione "Physics 2D -> Circle Collider 2D" como um componente. Desta vez, o sprite é redondo, então eu fiz um círculo, mas por favor, selecione Caixa ou Cápsula de acordo com a forma.

Também adicionaremos "Física 2D -> Rigidbody 2D".

Defina a escala de gravidade como 0 para evitar que a gravidade caia. Além disso, verifique Z para "Corrigir rotação" para evitar que o sprite gire.

Para Tilemap, adicione o componente Tilemap -> Tilemap Collider 2D.

Você pode ver que uma linha verde foi adicionada ao redor da ponta de mapa de pedra na exibição. Isso significa que a detecção de acerto é definida apenas para pedras. Você pode ver que a configuração do tipo de colisor da dica de mapa na paleta acima é refletida.

Tente correr o jogo e caminhar em direção à parede. Acho que você pode ter certeza de que o personagem pára na frente da parede corretamente. Você pode ver que ele pode ser facilmente implementado sem escrever nenhum programa relacionado à detecção de hits.

Combinando a detecção de ocorrências do MapChip

Como mencionado nas dicas abaixo, quando você realmente o move, o comportamento de detecção de batidas na parede é um pouco estranho. A causa e a solução alternativa estão descritas nas Dicas abaixo.

No entanto, combinando a parte de detecção de acertos do chip do mapa, o comportamento estranho será corrigido e a carga de processamento será reduzida ao mesmo tempo, então vamos fazer isso no mínimo.

Primeiro, marque "Usar em compósito" no Tilemap Collider 2D.

Em Adicionar componente, selecione Física 2D -> Colisor Composto 2D.

"Rigidbody 2D" também será adicionado, então faça "Body Type" para "Static".

Então, acho que você pode confirmar que o julgamento de acerto da pedra não é para cada chip de mapa e é combinado.

Agora execute o jogo e certifique-se de que está funcionando corretamente.