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 | |
|---|---|---|---|---|---|
|
site dividido em 4 layers
Como trabalhar com link? |
Flash & ActionScript |
maxbiano
|
|
|
|
Duvida em Layout
Posso fazer só com CSS-P |
Dreamweaver |
agno
|
|
|
|
Uma Dúvida
Dreamweaver e PHP |
PHP |
TicoeTeco
|
|
|
|
efeito de adesivo
como se faz |
Flash & ActionScript |
Morfel
|
|
|
|
flash
|
Outros |
pattysp
|
|
|
|
Flash com caminho completo não funciona link, alguem sabe como faz?
|
Flash & ActionScript |
HugoJobs
|
|
|
|
Base de internautas do País cresce com aumento de vendas de PCs
|
Notícias |
Notícias
|
|
|
|
Envio de email via Flash
|
Flash & ActionScript |
berkowitz
|
|
Publicidade
|
|

Help













