..:: MX Studio Fóruns ::..: Jogos em AS 3 - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




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

Jogos em AS 3 Duvida em Desenvolvimentos de jogos em flash com AS 3

#1 User is offline   GiovaniArduini 

  • Group: Membros
  • Posts: 4
  • Joined: 05-May 11

Posted 05 May 2011 - 10:41 AM

Olá galera salve estou fazendo meu primeiro post para tirar duvidas de como melhorar meu codigo e como dar continuidade no jogo. Pois detecto a colisão mas não sei como preceder para ou mata o inimigo ou morre.

Meu codigo até agora é:

tenho um layer chamado acoes que leva a maior parte do AS 3:



goro_soco.visible = false;// tenho o movie clip dele dando soco deixei invisivel, pois optei por deixar ele parado eo fundo mexer ou seja usar movie clips de movimento


//evento para fazer o goro andar

stage.addEventListener(KeyboardEvent.KEY_DOWN, moverGoro);// movieclip dele andando
stage.addEventListener(KeyboardEvent.KEY_UP, pararGoro);// para o movie clip
stage.addEventListener(KeyboardEvent.KEY_DOWN, andaCenario);// faz o cenario andar

//soco do goro

stage.addEventListener(KeyboardEvent.KEY_UP, pararSocoGoro);// para o movie clip do soco

//função
function pararGoro(e:KeyboardEvent):void{

goro_andando.stop();// para o movie clip dele andando
goro_soco.visible = false;// deixa invisivel o movie clip dele dando soco
goro_andando.visible = true;//deixa visivel o movie clip dele andando

}

function moverGoro(e:KeyboardEvent):void{

if(e.keyCode == 39){
goro_andando.play();
}
if(e.keyCode == 32){
goro_andando.visible = false;
goro_soco.visible = true;
goro_soco.play();
}

}

function andaCenario(e:KeyboardEvent):void{

if(e.keyCode == 39){
fundo.x += -2;

}
}
inimigo1.addEventListener(Event.ENTER_FRAME, moverInimigo);// move o inimigo na direção do goro

function moverInimigo(E:Event):void{
inimigo1.x += -5;

//Aqui esta o problema detectei a colisão porem não sei mais o que fazer, como matar o inimigo ou morrer
if (inimigo1.hitTestObject(goro_andando)){
goro_andando.stop();
goro_soco.visible = true;
goro_andando.visible = false;
inimigo1.removeEventListener(Event.ENTER_FRAME, moverInimigo);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, andaCenario);

stage.addEventListener(KeyboardEvent.KEY_DOWN, socoGoro);
function socoGoro(e:KeyboardEvent):void{
//trace(e.keyCode);
if(e.keyCode == 32){
goro_soco.play();


}
}
}
}


function pararSocoGoro(e:KeyboardEvent):void{
trace(e.keyCode);
if(e.keyCode == 32){
goro_soco.stop();
}
}
0

#2 User is offline   Paulo de tarso Jr 

  • Group: Membros
  • Posts: 60
  • Joined: 07-August 09

Posted 05 May 2011 - 11:45 AM

Cara eu não consegui entender muito a sua lógica ai. mais pelo que eu entendi esta tudo errado.
Você não deve criar um movie clip para cada animação de personagem e chama-lo pelo método invisible.
Arraste esses movies clips para um movie clip que contenha todos, cada frame dele vai conter 1 desses movies clips no mesmo ponto.
Assim quando tiver que chamar a animação você muda o frame do movieclip, assim evita um monte de programação pra ficar desativando o visible do filme.
Adicione também blocos de hit test invisíveis que contenham seu jogador. ficar testando hittest com a imagem de vez de um vetor criado no flash sempre fica mal feito.
depois que testado o hittest é só distruir o objeto que hitou e todos ficam felizes para sempre.

Da uma olhada nos tutorias
http://www.tutoriali...estObject/42606
0

#3 User is offline   GiovaniArduini 

  • Group: Membros
  • Posts: 4
  • Joined: 05-May 11

Posted 05 May 2011 - 09:58 PM

Valeu pela dica mas como é meu primeiro jogo em flash, não entendi muito que você disse. Porém resolvi mudar algumas coisas:

- Deixei o fundo fixo;
- Quando a tecla -> é pressionada o personagem anda na tela e o da um play no movie clip dele andando;

Porém como irei fazer para chamar o movie clip dele dando soco, se eu não sei em que posição ele parou na tela ?

Olha o codigo que criei ate agora:

stage.addEventListener(KeyboardEvent.KEY_DOWN, andaCenario);
stage.addEventListener(KeyboardEvent.KEY_UP, paraCenario);

function andaCenario(e:KeyboardEvent):void{

if(e.keyCode == 39){
//fundo.play();
goro_andando.play();
goro_andando.x += 2;
if( goro_andando.x > stage.stageWidth - 110){
trace("passou de faze")
wins.x = 100;
wins.y = 100;
addChild(wins);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, andaCenario);
}
}
}

function paraCenario(e:KeyboardEvent):void{

if(e.keyCode == 39){
//fundo.stop();
goro_andando.stop();
}
}


Ma se está errado vc poderia me dizer qual a forma mais coerente de começar um jogo em Action Script 3

Obrigado.
0

#4 User is offline   GiovaniArduini 

  • Group: Membros
  • Posts: 4
  • Joined: 05-May 11

Posted 09 May 2011 - 01:28 PM

Bom como ninguem respondeu eu corri atraz do preju e axei a resposta, olha o codigo ai, se é profissional não sei mas por enquanto esta dando certo:


var somJogoUrl:URLRequest= new URLRequest("som_jogo.mp3");
var tocaSom:Sound=new Sound(somJogoUrl);
var channel1:SoundChannel;
channel1=tocaSom.play();

personagem.stop();

var life:Number = 30;
var lifeInimigo:Number = 20;

stage.addEventListener(KeyboardEvent.KEY_DOWN, movimentoPersonagem);
function movimentoPersonagem(e:KeyboardEvent):void{
if(e.keyCode == 39){

personagem.gotoAndStop("andandoGoro");
personagem.x += 2;
fundo.x += -2;
if(personagem.x > stage.stageWidth - 110){
trace("passou de faze")
channel1.stop();
personagem.gotoAndStop("goroWins");


//wins.x = 100;
//wins.y = 100;
//addChild(wins);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, movimentoPersonagem);
stage.removeEventListener(KeyboardEvent.KEY_UP, paraPersonagem);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, movimentoSoco);
stage.removeEventListener(KeyboardEvent.KEY_UP, paraSoco);
inimigo1.removeEventListener(Event.ENTER_FRAME, moverInimigo);
}

}

}


stage.addEventListener(KeyboardEvent.KEY_UP, paraPersonagem);
function paraPersonagem(e:KeyboardEvent):void{
if(e.keyCode == 39){
personagem.gotoAndStop("paradoGoro");
}
}

stage.addEventListener(KeyboardEvent.KEY_DOWN, movimentoSoco);
function movimentoSoco(e:KeyboardEvent):void{
if(e.keyCode == 32){
personagem.gotoAndStop("socoGoro");

}
}

stage.addEventListener(KeyboardEvent.KEY_UP, paraSoco);
function paraSoco(e:KeyboardEvent):void{
if(e.keyCode == 32){
personagem.gotoAndStop("paradoGoro");

}
}


inimigo1.addEventListener(Event.ENTER_FRAME, moverInimigo);

function moverInimigo(E:Event):void{
inimigo1.x += -4;
if (inimigo1.hitTestObject(personagem)){
trace("colide");
personagem.gotoAndStop("caindoGoro");
inimigo1.x += 100;
life = --life;

//inimigo
stage.addEventListener(KeyboardEvent.KEY_DOWN, socoGoro);
function socoGoro(e:KeyboardEvent):void{
if(e.keyCode == 32){
lifeInimigo = lifeInimigo-1;

if(lifeInimigo < 1){
trace("inimigo morreu");
inimigo1.x += 550;
lifeInimigo = 20;

trace(life);
} // fim do IF

} // fim do IF

} // fim da função

//inimigo
} //fim do IF

// se life for igual a 0 o goro morre
if(life == 0){
trace("die")
} // fim do IF

} // fim da função

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)