..:: MX Studio Fóruns ::..: :::Tutorial::: usando o HitTest para simular uma parede/barreira - ..:: 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::: usando o HitTest para simular uma parede/barreira Ensina a simular uma barreira para que o objeto não ultrapasse.

Poll: !!! Votem !!!

Esse tópico te ajudou ao criar barreiras?

You cannot see the results of the poll until you have voted. Please login and cast your vote to see the results of this poll.
Vote Guests cannot vote

#1 User is offline   Deskelet 

  • Group: Membros
  • Posts: 5
  • Joined: 02-October 09

Posted 02 October 2009 - 05:00 PM

Meu primeiro topico hehe *-*
Bom, nesse topico vou postar um codigo completo e muito basico de um HitTest e explicar cada função.

Estou fazendo um jogo, e precisava colocar paredes pro char não passar, me matei pra conseguir...pesquisei por mais de 1 dia rsrs....até que finalmente eu bolei todo o codigo com base no que li. Sou novato na area de script pra flash mas...vamo la né^^...

O codigo é esse:


QUOTE
fscommand2("fullscreen",true); //Começa o comando
player.onEnterFrame = function()
//Entrada da "chaves" para começar o IF
{

//Abaixo: Comandos de IF para utilização das setas do teclado.
if (Key.isDown(Key.RIGHT))
player._x+=10;
else if (Key.isDown(Key.LEFT))
player._x-=10;
else if (Key.isDown(Key.UP))
player._y-=10;
else if (Key.isDown(Key.DOWN))
player._y+=10;


// Colocamos essa variável para controlar o total de paredes que voce vai ter
total_barreiras = 10;

// Agora criaremos uma função em loop para estabelecer a mesma função para o hitTest em todas as paredes.

for (i=1; i<=total_barreiras; i++ ) {
if ((Key.isDown(Key.RIGHT)) & (player.hitTest(_root["barreira"+i]))){
player._x=player._x-10;
}
if ((Key.isDown(Key.LEFT)) & (player.hitTest(_root["barreira"+i]))){
player._x=player._x+10;
}
if ((Key.isDown(Key.UP)) & (player.hitTest(_root["barreira"+i]))){
player._y=player._y+10;
}
if ((Key.isDown(Key.DOWN)) & (player.hitTest(_root["barreira"+i]))){
player._y=player._y-10;
}}}


LEIA COM ATENÇÃO:
QUOTE
Galera, primeiro de tudo, para que o HitTest funcione, você precisa criar suas barreiras/paredes.
Vou dar um exemplo de 4 paredes:
Crie 4 paredes sejam quadradas ou apenas traços e coloque uma bolinha em volta. Transforme cada um desses objetos em CLIPE DE FILME (apertando F8).
Em seguida vá em propriedades de cada uma das PAREDES e coloque em instância: barreira1...na segunda: barreira2 e por ai vai... até a 4 neste caso. Em seguida clique na bolinha e nomeie também em propriedades de player (igual nos codigos acima). Assim quando os codigos forem procurar as variaveis, vão ser iguais as que você acabou de criar e nomear. O barreira 1...barreira 2...barreira 3.....vai servir no final do codigo, quando acresentar um numero no final. Assim fazendo com que todas as barreiras funcionem normalmente. Não se incuque com isso, é só uma explicação.




Agora, vou explicar parte por parte do codigo, coloquei inteiro la em cima pra não se confundirem.


Essa parte inicia as funções. Digamos que é LEI ter isso antes de todos os outros codigos.
QUOTE
fscommand2("fullscreen",true);
player.onEnterFrame = function()
{



Esses vão fazer você andar com as setas do teclado...O numero 10 é a velocidade em que o objeto (o char) vai se mover na tela. X é o eixo HORIZONTAL e o y VERTICAL.
QUOTE
if (Key.isDown(Key.RIGHT))
player._x+=10;
else if (Key.isDown(Key.LEFT))
player._x-=10;
else if (Key.isDown(Key.UP))
player._y-=10;
else if (Key.isDown(Key.DOWN))
player._y+=10;


Aqui é onde você vai colocar o total de barreiras que tem no seu mapa/cenario. No meu caso coloquei 50.
QUOTE
total_barreiras = 50;


E a parte final:
Tem 4 Ifs, cada um testa uma seta do teclado, pra cima, baixo e lados. Não precisa mudar nada ali pois é um laço que faz praticamente tudo (for). As 3 chaves no final fecham todas as outras que estavam ainda em abertas desde o começo dos codigos.
O HitTest nesse caso, vai ter o seguinte pensamento:
Se tecla e player encostarem no objeto "barreira" então o player não vai passar. Se você colocar o player._x-9 ou inferior ao 10 vai dar pra passar, então aconselho deixar em 10!.
QUOTE
for (i=1; i<=total_barreiras; i++ ) {
if ((Key.isDown(Key.RIGHT)) & (player.hitTest(_root["barreira"+i]))){
player._x=player._x-10;
}
if ((Key.isDown(Key.LEFT)) & (player.hitTest(_root["barreira"+i]))){
player._x=player._x+10;
}
if ((Key.isDown(Key.UP)) & (player.hitTest(_root["barreira"+i]))){
player._y=player._y+10;
}
if ((Key.isDown(Key.DOWN)) & (player.hitTest(_root["barreira"+i]))){
player._y=player._y-10;
}}}


E por ultimo, vou mostrar abaixo o que cada nome significa nos comandos que eu editei.
QUOTE
player: o personagem/bolinha/quadrado ou qual quer coisa que você vai usar pra se mover com as setinhas.
total_barreiras: é o numero de barreiras/paredes que você tem no seu mapa.




No final o que me ajudou MUITO MESMO foi desse topico: http://www.mxstudio.com.br/forum/index.php?showtopic=57833 .
Abraços a todos e espero que tenha ajudado. Duvidas não é comigo rsrs, mas seu eu souber responder...Dai eu respondo xD.

malz os erros de pt rs...
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)