Implemente a detecção de ocorrências para cada tipo de MapChip
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?
- Crie um mapa 2D de cima para baixo usando mapas de mosaico padrão do Unity
- Tratamento de colisão com física padrão (2D)
- Implementar detecção de ocorrências com tilemaps
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.