Tile System [Player part 2]

今日は皆-さん. na segunda parte de nosso tutorial TileSystem Player criaremos limitações de cenários. Tentei fazer o código mais simples possível. Lembrando que o objetivo desses tutoriais são para vocês refazerem entenderem o processo e incrementarem com suas lógicas.

Primeiro vamos começar a fazer algumas simplificações do código anterior.
1. vamos criara a variável TileP = 20; e substituir nos locais que tinham o numero 20 por TileP. Essa variável ela está se referindo ao tamanho do Tile do cenário.
2. Vamos adicionar uma propriedade chamada height no nosso player, essa propriedade vai fazer referencia a metade do perímetro de altura e largura de nosso personagem, essa propriedade será crucial para adicionarmos a verificação de hit.
Nosso código novo estará todo situado na função movePlayer. Primeiro vamos entender como nosso código funcionará agora.

Agora trabalharemos e faremos cálculos em variáveis imaginarias para verificar se será possível para nosso player se mover, caso seja possível transcreveremos o valor da variável imaginaria para as propriedades do personagem.

Descobrindo coordenadas:

Se dividimos um numero qualquer pelo tamanho do quadrante e arredondarmos o resto da divisão para cima saberemos seu posicionamento. Observe a imagem a seguir.

Temos o valor sabemos que o tamanho do quadrante é 20 então 30 divido por 20 = 1.5 arredondando para cima descobrimos que o ponto 30 está no segundo quadrante o mesmo vale para o ponto 65, sua divisão é 3.25 arredondando para cima encontramos 4 isso indica que o nosso ponto está no quadrante 4.

Se pegarmos os pontos das extremidades de nosso personagem e dividirmos pelo TileP saberemos exatamente qual será o bloco em que ele se encontrará após mandarmos ele se mover. Para encontrarmos as extremidades de nosso personagem basta adicionarmos ou reduzimos (height + speed) de seu _x e _y.

Após sabermos qual bloco nosso personagem irá descobriremos qual se a propriedade walk desse bloco é true ou false, se for true significa que o nosso personagem poderá passar senão apenas resetamos as variáveis imaginarias e finalizamos a função

Analisando a Função:

A nossa função movePlayer Ficará dessa maneira.

function movePlayer (ob, dx, dy) {
   //armazenando as cordenadas _x e _y numa nova variavel
   ob.x = ob._x;
   ob.y = ob._y;
   //Encontrando qual será o proximo Tile que nosso
   obsh = ob.speed + ob.height;
   ob.xtileIm = Math.floor ((ob.x += (obsh * dx)) / TileP);
   ob.ytileIm = Math.floor ((ob.y += (obsh * dy)) / TileP);
   //montando o nome do tile para extrair sua propriedade walk
   var tileName:String = "Tile_" + (ob.ytileIm) + "_" + (ob.xtileIm);
   //montando o nome do tile para extrair sua propriedade walk
   if (_root["Field"][tileName].walk) {
     if ((dx == 1) or (dx == -1)) {
       ob._x += ob.speed * dx;
     }
     if ((dy == 1) or (dy == -1)) {
       ob._y += ob.speed * dy;
     }
   }
   //Atualizando as coordenadas de nosso personagem
   ob.xtile = Math.floor (ob._x / TileP);
   ob.ytile = Math.floor (ob._y / TileP);
   //Resetando os valores do dos tiles imaginarios
   ob.xtileIm = ob.xtile;
   ob.ytileIm = ob.ytile;
 }

O tema da continuação de nosso tutorial será ITENS, criaremos um sistema simples de coleta e pontuação. Então até o próximo post. CYA また見てね.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: