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();
}
}
Publicidade
|
|
Page 1 of 1
Jogos em AS 3 Duvida em Desenvolvimentos de jogos em flash com AS 3
#2
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
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
#3
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.
- 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.
#4
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
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
Share this topic:
Page 1 of 1
Similar Topics
| Topic | Forum | Started By | Stats | Last Post Info | |
|---|---|---|---|---|---|
|
Entrevista com Paulo de Campos, o Lord Eternal
|
Notícias |
Notícias
|
|
|
|
combox.. parametros
ajuda eu |
Web Standards |
Senshi
|
|
|
|
Layout em Dreamweaver
Problemas com as DIV tags. |
Dreamweaver |
Kikitten
|
|
|
|
Jogo Megaman PErgunta!!!!!!!!!1
Depois de compreender algumas coisas so falta..... |
Flash & ActionScript |
Dougls
|
|
|
|
barra de rolagem no flash
|
Dúvidas Gerais |
Ellenc
|
|
|
|
Proteja dados privados com senha
|
Notícias |
Notícias
|
|
|
|
Sistema completo administracao (CMS)
ainda em construção... |
PHP |
Mario CREATIVO
|
|
|
|
combo box flash mx 2004
como usar? |
Flash & ActionScript |
M. Vinícius Brandão
|
|
Publicidade
|
|

Help













