..:: MX Studio Fóruns ::..: TUTORIAL: Como fazer o boneco pegar itens. - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

TUTORIAL: Como fazer o boneco pegar itens.

#1 User is offline   diммy Flαรн.єxє 

  • Group: Membros
  • Posts: 27
  • Joined: 24-September 09

  Posted 24 September 2009 - 08:57 PM

Neste tutorial veremos como fazer o nosso herói para pegar alguns itens do chão. Você sabe das coisas: os cristais, moedas, aranhas mortas, poções de cura, munições:



Os itens são diferentes no que eles realmente fazem. Alguns itens de aumentar sua pontuação, cerca de aumentar a sua saúde ou dar-lhe mais balas. Neste exemplo, todos os itens de fazer apenas uma coisa - eles te dão mais pontos. Seu até você para criar outros tipos de itens.

Vamos começar com o filme a partir do capítulo 6 Abra a porta para que nós não temos muito código para fazer coisas difíceis de entender.

Primeiro desenhe o seu clipe de filme itens. Gráficos Lugar de itens diferentes nos quadros de dentro dele. Como o herói e inimigos, todos os itens devem ser alinhados no centro. No primeiro quadro, adicionar "Pare de ação" para evitar mc de jogar todos os gráficos adoráveis. Certifique-se que esta ligação MC é definido como "Exportar este símbolo" e seu identificador é "itens". Tendo os itens no clipe de filme em separado nos permite colocar mesmo item em qualquer telha de fundo sem a necessidade de tirar as telhas novamente.

O que é o seu ponto?
Para mostrar os pontos coletados desenhar caixa de texto dinâmica na tela. Posição esta caixa de texto fora da área, de modo telhas telhas não vai cobrir isso. A caixa de texto dinâmica deve mostrar variável "pontos":



A variável "pontos" terá de se lembrar dos pontos atuais, mesmo quando mudamos de mapas. Podemos seguramente anexá-lo ao objeto do jogo. Ao declarar objeto jogo adicionar pontos de propriedade e ajustá-lo para 0 (a maioria dos jogos começam com 0 pontos).

CÓDIGO
game = (tileW: 30, tileH: 30, currentMap: 1, pontos: 0);

Something to pick up
Como em tudo, primeiro vamos declarar os objetos e criar itens de série para os cargos de itens em diferentes mapas:

CÓDIGO
myItems = [
[0],
[[1,1,1], [1,1,2], [2,1,3]],
[[2,1,3], [2,6,3], [1,5,4]]
];
game.Item1 = function () ();
game.Item1.prototype.points = 1;
game.Item2 = function () ();
game.Item2.prototype.points = 10;

myItems matriz é construída mesma forma como uma matriz inimigos capítulo (9). Tem matriz para cada um dos mapas. Nós havent usado map0 tão primeira matriz está vazia. Para map1 criámos 3 itens: [1,1,1], [1,1,2], [2,1,3]. Cada item tem 3 números, o primeiro número é o tipo de item (1 ou 2 aqui) e é também o número do frame a ser mostrado no clipe de filme anexado itens. Número Segunda e terceira determinar azulejo que será colocado. Permite olhar para o último item: sabemos que é do tipo 2 e vai ser colocado sobre o azulejo x = 1, y = 3.

A última parte do código declara dois tipos de itens. Atualmente, eles só têm uma propriedade de "pontos". Isso é como o jogador recebe pontos muito para escolher o item. Item Type1 irá adicionar 1 a pontuação de jogadores, type2 item dá a whopping 10 pontos.

Agora permite modificar a função buildMap para adicionar itens ao mapa é criado. Adicione este código antes da criação do char:

CÓDIGO
game.items myItems game.currentMap = [];
for (var i = 0; i <game.items.length; + + i) (
var name = "item" + game.items [i] [2 ]+"_"+ game.items [i] [1];
game [name] = new game [ "Item" + game.items [i] [0]];
game [name]. posição = i;
game.clip.attachMovie ( "itens", nome, 11001 + i);
game [name]. clip = game.clip [nome];
game [name]. clip._x = game.items ([i] [1] * game.tileW) + game.tileW / 2;
game [name]. clip._y game.items = ([i] [2] * game.tileH) + game.tileH / 2;
game [name]. clip.gotoAndStop (game.items [i] [0]);
)
_root.points = game.points;

Primeiro vamos fazer cópia da matriz myItems para o mapa atual. Esta matriz chamada "game.items" irá armazenar as informações sobre os itens no mapa atual. Nós então percorrer todos os elementos na matriz de itens.

A partir da linha:

CÓDIGO
var name = "item" + game.items [i] [2 ]+"_"+ game.items [i] [1];

teremos nome para o novo item. Seu nome seguirá as mesmas regras que os nomes das nossas telhas, item sobre o azulejo x = 1, y = 3 será nomeado "item3_1".

Depois de criar objeto novo item a partir dos modelos que fizemos anteriormente, vamos salvar a posição em que o novo objeto. Que posição é essa? Seu contador "i" e salvando-o no item objeto saberemos qual item na matriz itens deste objeto representa. Isso será muito útil quando começamos a pegar itens. Vamos ver: quando fazemos map1 e i = 1, estamos criando item a partir dos dados [1,1,2], thats segundo elemento para a matriz itens map1. Item será nomeado "item2_1" e podemos ter acesso a sua posição na matriz com item2_1.position. Mais sobre isso quando nós removemos itens.

Depois que colocamos nova instância de itens de clipe de filme no palco e colocá-lo no coordenadas corretas. Última linha no circuito envia novo clipe de filme para o quadro de igualdade com o tipo de item. Todos os itens type1 mostrará quadro 1, por exemplo.

Finalmente vamos atualizar a variável aponta para mostrar o número correto de pontos de jogador tem. No início de The Game, ele provavelmente tem 0 pontos, mas quando se muda os mapas ainda usamos a mesma função e pelo tempo que o jogador poderia ter tido sorte e recolhidos alguns pontos.

Encontrá-lo
Temos itens, temos o herói, agora temos de fazer o herói se sabe quando ele pisou em algo. Adicione ao fim da função moveChar seguinte código:

CÓDIGO
itemname var jogo = [ "item" + ob.ytile +"_"+ ob.xtile];
if (itemname e ob == _root.char) (
game.points = game.points + itemname.points;
_root.points = game.points;
removeMovieClip (itemname.clip);
game.items [itemname.position] = 0;
excluir do jogo [ "item" + ob.ytile +"_"+ ob.xtile];
)

O itemname variável terá valor com base na posição atual do herói. Quando o herói está na telha x = 4, y = 9, ele vai olhar para "item9_4". Se tal objeto existe, itemname irá se referir a esse objeto, mas no caso de não ter sorte item em que a telha, itemname não terá nenhum valor.

Se achamos objeto de item e estamos nos movendo herói, primeiro iremos adicionar pontos do objeto item ao game.points e atualizar _root.points variável também para lhes mostrar.

Agora é hora de remover o item do palco. Cada item deve ser retirado a partir de 3 lugares: o clipe de filme, de itens de série e seu objeto. Atualmente nós não excluí-la da matriz de pontos, temos apenas um conjunto 0, na posição deste item. E não se esqueça, array itens é apenas cópia da matriz myItems, se sair do mapa e volta, todos os itens que aparecem novamente. Para evitar má idéia tal, vamos atualizar a função changeMap.

Adicionar ao início da função changeMap:

CÓDIGO
tempitems var = [];
for (var i = 0; i <game.items.length; + + i) (
   if (game.items [i]) (
     var name = "item" + game.items [i] [2 ]+"_"+ game.items [i] [1];
     excluir do jogo [nome];
     tempitems.push (game.items [i]);
   )
)
myItems [game.currentMap] = tempitems;

Aqui usamos matriz temporária "tempitems" para copiar os itens que ainda não pegou de volta a partir de itens de matriz para a matriz myItems. Quando o elemento na posição i não é 0, significa que item não foi apanhado e vamos guardá-lo para ser mostrado na próxima vez o jogador entra neste mapa. Mas a certeza de que o objeto do item costuma aparecer no mapa ao lado, temos que eliminá-lo primeiro. No entanto, quando item foi pego, ele não aparecerá novamente quando jogadores de volta.



E aqui eu configurei side scroller com tudo o que falei até agora:



Download do fla para scroller lado com todo o código e filme criado aqui.



Mais agradeço o José por encontrar o bug no código de itens quando mudar mapas. O problema foi que, se o artigo não foi apanhado, em seguida, objeto de item não foi excluído no mapa do processo de mudança e que existia no mapa ao lado também, mas não tive qualquer clipe de filme para mostrar. Então, você acabou com itens invisíveis. Tenho atualizado o fla e código, mas certifique-se de que você tem linhas:

CÓDIGO
var name = "item" + game.items [i] [2 ]+"_"+ game.items [i] [1];
excluir do jogo [nome];
na função changeMap.

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)