Publicidade
|
|
Dúvidas do tutorial de criação de games Tirarei dúvidas sobre o tutorial de criação de games
#1
Posted 06 April 2007 - 03:29 AM
Estarei utilizando este tópico para responder perguntas referentes ao tutorial de criação de games que eu criei.
Artigo Flash - Criação de Games em Flash
Poste aqui as dúvidas que tiverem.
vlw galera!
#2
Posted 08 May 2007 - 02:32 PM
Postei uma dúvida sobre esse tutorial em outro lugar, não tinha visto este tópico!
http://www.mxstudio.com.br/forum/index.php?showtopic=41362
Estou tentando fazer com que a barra de espaço atire. Mas se eu mantiver a barra pressionada, gostaria que saissem os tiros dentro de um determinado intervalo.
Abraço
#3
Posted 11 May 2007 - 04:59 PM
1- Tem como definir o volume de cada efeito de som sem isolá-los em movieclips? só consigo alterar os volumes individualmente se os sons estiverem em movieclips separados
2- Algum sugestão de algoritmo pra criar uma IA de movimentação veicular?? no caso seria um jipe, o melhor q consegui foi random AI controlando steering, mas n gostei do resultado
#4
Posted 14 May 2007 - 09:46 PM
"Agora vamos so código do inimigo, dê dois cliques no inimigo. No primeiro frame coloque:"
1- var life:Number = 100;
Não entendi aonde é pra colocar esse código na janela de actions (F9)?
Outra dúvida quando termino o tutorial e mando visualizar em html aparece a seguinte mensagem de error no flash:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 12: Syntax error.
12. }
Total ActionScript Errors: 36 Reported Errors: 36
#5
Posted 16 May 2007 - 12:24 PM
Postei uma dúvida sobre esse tutorial em outro lugar, não tinha visto este tópico!
http://www.mxstudio.com.br/forum/index.php?showtopic=41362
Estou tentando fazer com que a barra de espaço atire. Mas se eu mantiver a barra pressionada, gostaria que saissem os tiros dentro de um determinado intervalo.
Abraço
Olá marcix,
Bom para fazer isso tem várias formas, uma delas bem simples sem usar métodos de temporização é fazer o seguinte:
declare mais uma variável do tipo booleana no _root com valor inicial de TRUE que vai ser modificado durante o decorrer do jogo, essa variável muda para FALSE quando vc precionar a barra de espaço, abaixo está representado como ficaria com o código original que eu uso (Atirando com o mouse):
var cont2:Number = new Number();
var atirar:Boolean = true; // <= VARIÁVEL QUE ADICIONEI PARA CONTROLAR O FLUXO DE TIROS
cont=0; //contadores de tiros
count2=0; //contadores de explosões
onEnterFrame=function()
{
/*verificamos quais teclas o usuário está precionando
E também verificando quais os limites da tela
*/
if(Key.isDown(Key.LEFT) && nave._x >=20)
nave._x -=20;
if(Key.isDown(Key.RIGHT) && nave._x <500)
nave._x +=20;
if(Key.isDown(Key.UP) && nave._y >20)
nave._y -=20;
if(Key.isDown(Key.DOWN) && nave._y <330)
nave._y +=20;
}
onMouseDown = function()
{
/*Verifica se eu posso atirar*/
if(atirar)
{
_root.cont++;
_root.tiro.duplicateMovieClip("tiro"+_root.cont,_root.cont,_root.cont); //duplicamos o tiro
/*fazemos com que a réplica apareça na frente da nave*/
_root["tiro"+_root.cont]._y = nave._y+10;
_root["tiro"+_root.cont]._x = nave._x+10;
atirar = false; // <= ÚNICO MOMENTO QUE SETO ATIRAR PARA FALSE, não permitindo um tiro após o outro
}
}
Dah forma que está vc vai conseguir dar um único tiro
{
if(_name != "tiro")
{
this._y-=30;
if(this._y < 0) // VERIFICAÇÃO NOVA, eu defini que quando o tiro chegar no limite superior que poderei atira novamente
_root.atirar = true;
if(this._y <0)//se o tiro passou do y=0 removemos do filme
this.removeMovieClip();
if(this.hitTest(_root.inimigo)) //verifica se tiro colidiu com o inimigo
{
_root.atirar = true; //QUANDO ACERTAR O INIMIGO TAMBÉM PODEREI ATIRAR NOVAMENTE
_root.inimigo.life=0; //zeramos o life, um tiro só é fatal
this.removeMovieClip(); //sumimos com o tiro da tela
}
}
}
Espero que tenha esclarecido sua dúvida, qualquer problema só perguntar
#6
Posted 16 May 2007 - 12:54 PM
1- Tem como definir o volume de cada efeito de som sem isolá-los em movieclips? só consigo alterar os volumes individualmente se os sons estiverem em movieclips separados
2- Algum sugestão de algoritmo pra criar uma IA de movimentação veicular?? no caso seria um jipe, o melhor q consegui foi random AI controlando steering, mas n gostei do resultado
Eae Strid,
Para sua primeira questão, vai um código abaixo que vai te ajudar. A classe Sound é ótima para carregar os sons no jogo, vc pode usar ferramentas para editar seus sons, tornando-os menores, como o sound Forge. No código abaixo mostra o carregamento de uma música mas vc pode criar um array guardando diversos objetos. Existem inúmeros métodos pertencentes a esta classe, por exemplo setVolume, start, position, duration entre outros. Dá uma pesquisada no help do flash ele explica cada um.
som_sound.loadSound("musica.mp3", true); // carrega musica
som_sound.setVolume(10);
som_sound.start();
Com um array armazenando todas as suas músicas, vc não necessitará criar movie clips para ouvir seus sons.
Quanto a sua segunda pergunta, tem IA pra tudo hehe, mas no caso de IA de carros, daríam vários tutoriais falando só disso. Abordarei este assunto em tutos mais avançados de criação de games. As melhores técnicas de IA tem bastante teoria envolvida.
até a próxima!
#7
Posted 16 May 2007 - 01:04 PM
"Agora vamos so código do inimigo, dê dois cliques no inimigo. No primeiro frame coloque:"
1- var life:Number = 100;
Não entendi aonde é pra colocar esse código na janela de actions (F9)?
Outra dúvida quando termino o tutorial e mando visualizar em html aparece a seguinte mensagem de error no flash:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 12: Syntax error.
12. }
Total ActionScript Errors: 36 Reported Errors: 36
Olá WEBSERVER,
Esse código:
Vai no primeiro frame do movie Clip inimigo.
Se os erros não sumirem depois de vc colocar no lugar certo, num sei o que pode ser. Dá mais uma testada
té +.
#8
Posted 17 May 2007 - 06:40 PM
#9
Posted 18 May 2007 - 11:50 PM
eu queria saber como faz para não matar o inimigo em apenas 1 tiro
Vlw
#10
Posted 19 May 2007 - 03:48 PM
eu queria saber como faz para não matar o inimigo em apenas 1 tiro
Vlw
Eae Blz!
Bem simplizinho,
tem uma linha no cídigo do tuto que faz o life do inimigo setar pra Zero:
Só mude para:
No lugar do 10 vc pode colocar o valor de decremento do life que quiser.
flw
#11
Posted 20 May 2007 - 11:20 PM
ou pelo menos quando ele colidisse com a nave, a nave morresse,
queria saber se tem como alguém me ajudar.
Vlwwww
#12
Posted 23 May 2007 - 07:41 PM
Eu estou trabalhando em um game independente (No fundo do quintal). Estou a quase 6 mês queimando meus neurônios para conseguir concluir o projeto. Devo dizer que eu comecei do zero, inclusive no que diz respeito aos conhecimentos em AS. Apesar de ainda não concluído, já está quase “jogavel”.
Gostaria de ensinar e aprender, afinal de contas o game não esta pronto;
Peço licença para o Márcio Silva, porque eu vou roubar um pouco a cena !
Flossembürg Project (Nome do jogo):
É um game de naves, estilo o lendário Ëhrnañder (Caso eu tenha escrito errado avisem).
Ai vai os códigos da sua nave:
Crie um Mc e dê o nome da instancia de "nave" (SEM aspas)
Obs: Crie um palco de 350 lagura x450 altura.
// //////////////////////////////////////////////////////////////
// ////////////////////Script da Nave////////////////////////////
// ///////////////////////////////////////////
///////////////////
onClipEvent (load) {
speed = 6;
var vida:Number = new Number();
var vida = 100;
var j = 2;
var w = 100;
var i = 2;
var r = 50;
}
// /////////////////////1.2 Navegação Eixo X,Y////////////////////
onClipEvent (enterFrame) {
// /////////////2.1 Para cima, baixo, direita, esquerda.//////////////
if (Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT)) {
_x -= speed;
}
if (Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT)) {
_x += speed;
}
if (Key.isDown(Key.UP) && !Key.isDown(Key.DOWN)) {
_y -= speed;
}
if (Key.isDown(Key.DOWN) && !Key.isDown(Key.UP)) {
_y += speed;
}
// /////////////////1.3 Navegação nas Diagonais///////////////////////
if (Key.isDown(Key.LEFT) && Key.isDown(Key.UP) && !Key.isDown(Key.RIGHT) && !Key.isDown(Key.DOWN)) {
}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.UP) && !Key.isDown(Key.LEFT) && !Key.isDown(Key.DOWN)) {
}
if (Key.isDown(Key.LEFT) && Key.isDown(Key.DOWN) && !Key.isDown(Key.RIGHT) && !Key.isDown(Key.UP)) {
}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.DOWN) && !Key.isDown(Key.LEFT) && !Key.isDown(Key.UP)) {
}
// //////////////1.4 Limitador de Posição/////////////////////
if (_y<50) {
_y = 50;
}
if (_y>380) {
_y = 380;
}
if (_x<50) {
_x = 50;
}
if (_x>300) {
_x = 300;
}
}
// ////////////////////////////////////////////////////////////////
// //////////////////2.0 Sistemas de Ataque////////////////////////
// ////////////////////////////////////////////////////////////////
// ///////////////////2.1 Direção o Laser//////////////////////
// //////////////////////2.2 Sistema de Disparo/////////////////////////
onClipEvent (keyDown) {
if (Key.isDown(Key.SPACE)) {
_root.laser.duplicateMovieClip("laser"+j, j);
_root["laser"+j]._x = this._x;
_root["laser"+j]._y = this._y;
_root["laser"+j].disparar = true;
j++;
_root.viewj = j;
}
}
// /////////////////////////////////////////////////////////////////
// ///////////////////////3.0 Míssel////////////////////////////////
// /////////////////////////////////////////////////////////////////
// ///////////////////3.2.1 Sistema de Lançamnto////////////////////////
onClipEvent (keyDown) {
//////////////4.1 Sistema de Contagem de Misseis//////////////
_root.hud1 = this.r;
////////////////4.2 Limitador de Misseis//////////////////////
if (Key.isDown(Key.CONTROL) && !r<=0) {
r--;
//////////////////////3.2.2 Sistema de Lançamnto////////////////////////
_root.missel.duplicateMovieClip("missel"+i, i);
_root["missel"+i]._x = this._x;
_root["missel"+i]._y = this._y;
_root["missel"+i].lancar = true;
i++;
}
}Agora vamos ao 2° passo, o Inimigo.
Crie um Mc chamado de "inimigo"
/////////////////////////////////////////////////////////////////
///////////////////////Script do Inimigo/////////////////////////
/////////////////////////////////////////////////////////////////
onClipEvent (load) {
badvelo = 1;
var inicial = 30;
var badvida = inicial;
var badj = 2;
}
onClipEvent (enterFrame) {
_root.teste = this.hitTest(_root.nave);
if (this._name!= _root["bad"+_root.engine.tipo]) {
if (badvida<=0) {
_root.engine.flag = false;
_root.contaexp++;
/*Criamos uma explosão, pois o inimigo morreu*/
_root.explosao.duplicateMovieClip("explode"+_root.contaexp, _root.contaexp, _root.contaexp);
_root["explode"+_root.contaexp]._x = this._x;
_root["explode"+_root.contaexp]._y = this._y;
this._x = random(350);
//o inimigo volta numa posição randômica
this._y = 6;
this.badvida = inicial;
//voltamos o life do inimigo
} else {
if (_root.badlevel == 1) {
updateAfterEvent();
_x += badvelo;
_y += 3;
// //////////////1.2 Limitador de Posição/////////////////////
if (_y<50) {
_y = 380;
}
if (_y>420) {
_y = 50;
}
if (_x<50) {
badvelo = 1;
}
if (_x>300) {
badvelo = -1;
}
////////////////////////////////////////////////////////////////////
//////////////// LASER DO INIMIGO LV1 //////////////////////////////////
///////////////////////////////////////////////////////////
/// Para disparar o laser !
if (_root.inimigo._x<=_root.nave._x+3 && _root.inimigo._x>=_root.nave._x-3) {
_root.badlaser.duplicateMovieClip("badlaser"+badj, badj);
_root["badlaser"+badj]._x = this._x;
_root["badlaser"+badj]._y = this._y;
_root["badlaser"+badj].disparar = true;
badj++;
}
}
///////////////////////////////////////////////////////////
////////////////////////LEVEL2/////////////////////////////
///////////////////////////////////////////////////////////
if (_root.badlevel == 2) {
if (badvelo == 1 && inicial == 30) {
badvelo = 3;
inicial = 60;
}
_x += badvelo;
_y += 4;
// //////////////1.2 Limitador de Posição/////////////////////
if (_y<50) {
_y = 420;
}
if (_y>380) {
_y = 50;
}
if (_x<50) {
badvelo = 3;
}
if (_x>300) {
badvelo = -3;
}
////////////////////////////////////////////////////////////////////
//////////////// LASER DO INIMIGO LV2 //////////////////////////////////
///////////////////////////////////////////////////////////
/// Para disparar o laser !
if (_root.inimigo._x<=_root.nave._x+5 && _root.inimigo._x>=_root.nave._x-5) {
_root.badlaser.duplicateMovieClip("badlaser"+badj, badj);
_root["badlaser"+badj]._x = this._x;
_root["badlaser"+badj]._y = this._y;
_root["badlaser"+badj].disparar = true;
badj++;
}
}
//////////////////////////////////////////////////////
//////////////////LEVEL 3////////////////////////////
//////////////////////////////////////////////////////
if (_root.badlevel == 2) {
if (badvelo == 1 && inicial == 30) {
badvelo = 3;
inicial = 60;
}
_x += badvelo;
_y += 4;
// //////////////1.2 Limitador de Posição/////////////////////
if (_y<50) {
_y = 420;
}
if (_y>380) {
_y = 50;
}
if (_x<50) {
badvelo = 3;
}
if (_x>300) {
badvelo = -3;
}
////////////////////////////////////////////////////////////////////
//////////////// LASER DO INIMIGO LV3 //////////////////////////////////
///////////////////////////////////////////////////////////
/// Para disparar o laser !
if (_root.inimigo._x<=_root.nave._x+5 && _root.inimigo._x>=_root.nave._x-5) {
_root.badlaser.duplicateMovieClip("badlaser"+badj, badj);
_root["badlaser"+badj]._x = this._x;
_root["badlaser"+badj]._y = this._y;
_root["badlaser"+badj].disparar = true;
badj++;
}
}
///////////////////////////////////////////////////////////
/////////////////// LEVEL 4 //////////////////////////////
////////////////////////////////////////////////////////
if (_root.badlevel == 4) {
if (badvelo == 3) {
badvelo = 5;
}
_x += badvelo;
_y += 6;
// //////////////1.2 Limitador de Posição/////////////////////
if (_y<50) {
_y = 420;
}
if (_y>380) {
_y = 50;
}
if (this._x>=_root.nave._x) {
this._x -= ((this._x-_root.nave._x)/10);
this._x-=1;
}
if (this._x<=_root.nave._x) {
this._x += ((_root.nave._x-this._x)/10);
this._x+=1;
}
////////////////////////////////////////////////////////////////////
//////////////// LASER DO INIMIGO LV4 //////////////////////////////////
///////////////////////////////////////////////////////////
/// Para disparar o laser !
if (_root.inimigo._x<=_root.nave._x+1 && _root.inimigo._x>=_root.nave._x-1) {
_root.badlaser.duplicateMovieClip("badlaser"+badj, badj);
_root["badlaser"+badj]._x = this._x;
_root["badlaser"+badj]._y = this._y;
_root["badlaser"+badj].disparar = true;
badj++;
}
}
//////////////////Mover a barra da vida///////////////
_x = _root._inimigo._x;
_root.badbarra._x = _x-(this.inicial/2);
_y = _root._inimigo._y;
_root.badbarra._y = (_y)-40;
_x = _root._inimigo._x;
_root.badbarraver._x = _x-(this.inicial/2);
_y = _root._inimigo._y;
_root.badbarraver._y = (_y)-40;
updateAfterEvent();
_root.badbarraver._xscale = inicial;
_root.badbarra._xscale = badvida;
if (_root.badbarra._xscale<=0) {
_root.badbarra._xscale = 0;
}
////////////////X e Y inutil
this._x = _root._inimigo._x;
_root.badox = this._x;
this._y = _root._inimigo._y;
_root.badoy = this._y;
_x = _root._inimigo._x;
_root.badregx._x = _x;
_y = _root._inimigo._y;
_root.badregy._y = _y;
updateAfterEvent();
//////////////////////////LEVEL EVOLUTION///////////
if (_root.badhit>=30) {
_root.badlevel = 2;
}
if (_root.badhit>=60) {
_root.badlevel = 3;
}
if (_root.badhit>=90) {
_root.badlevel = 4;
}
}
}
}
Nesse script contem alguns erros, portanto vá com calma. O erro está nos comandos do Level==3
Note que em "LASER DO INIMIGO" há um script que manda o inimigo atirar.
No inicio do código há um script que deveria criar novos inimigos com Mc diferentes, juntamente com o Mc “engine”. Mas isso não funciona corretamente, gostaria de ser ajudado nisso.
Agora o laser da nave;
Crie um MC para o laser, edite o mc criando 3 frames, e em cada um eles desenhe um tipo de laser diferente.
No 1° frame coloque:
stop(); _root.dano=2;No 2°:
stop(); _root.dano=15;
No 3°:
stop(); _root.dano=40;
Agora crie um layer e no 1° frame:
stop();
if(_root.level==1){
gotoAndStop(1);
}
if(_root.level==2){
gotoAndStop(2);
}
if(_root.level==3){
gotoAndStop(3);
}Saia do modo edição, e clique no Mc do laser. Dê o nome da instancia de “laser”. Agora vem o código:
///////////////////////////////////////////////////////////////////
///////////////////////Script do Laser/////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
////////////////// 1.0 Movimento do Laser//////////////////////////
///////////////////////////////////////////////////////////////////
/////////////1.1 Modulo de velocidade e aceleração////////////////
onClipEvent (load) {
var velocidade = 2;
var aceleracao = 1;
}
//////////////////////1.2 Ordem de Disparo/////////////////////////
onClipEvent (enterFrame) {
if (disparar) {
this._x = _root._nave._x;
this._y = _root._nave._y;
updateAfterEvent();
velocidade += aceleracao;
_y -= velocidade;
}
////////////////////1.3 Sistema de Remoção ////////////////////////
if ((_y+_height)<0) {
this.removeMovieClip();
}
updateAfterEvent();
}
/////////////////////////////////////////////////////////////////
///////////////////////2.0 Detector de Hit///////////////////////
/////////////////////////////////////////////////////////////////
onClipEvent (enterFrame) {
if (this.hitTest(_root.inimigo)) {
//verifica se tiro colidiu com o inimigo
_root.hit++;
_root.inimigo.badvida -= _root.dano;
//zeramos o life, um tiro só é fatal
this.removeMovieClip();
}
}
Se sua nave pode atirar, porque seu adversário também não poderia?
Então vamos lá: (o script é muito semelhante ao laser)
Crie um MC e dê o nome da instancia de "badlaser"
///////////////////////////////////////////////////////////////////
///////////////////////Script do Laser/////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
////////////////// 1.0 Movimento do Laser//////////////////////////
///////////////////////////////////////////////////////////////////
/////////////1.1 Modulo de velocidade e aceleração////////////////
onClipEvent(load) {
var velocidade = 1;
var aceleracao = 0.4;
}
//////////////////////1.2 Ordem de Disparo/////////////////////////
onClipEvent(enterFrame) {
if(disparar) {
velocidade += aceleracao;
_y += velocidade
}
updateAfterEvent();
}
/////////////////////////////////////////////////////////////////
///////////////////////2.0 Detector de Hit///////////////////////
/////////////////////////////////////////////////////////////////
onClipEvent (enterFrame) {
if (this.hitTest(_root.nave)) {
//verifica se tiro colidiu com o inimigo
_root.teste=true;
this.removeMovieClip();
}
if (this.hitTest(_root.sbc)) {
this.removeMovieClip();
}
}
////////////////////1.3 Sistema de Remoção ////////////////////////
onClipEvent(enterFrame) {
if ((_y+_height)>450) {
this.removeMovieClip();
}
}
Peço ajudo a alguém, apesar do laser detectar que bateu na nave, ele não altera a variável _root.nave.vida. No Script diz para dar True para a variável _root.teste, e o MC _root.engine diz que quando _root.teste==true, a _root.nave.vida é subtraída.
Vamos ao script do 1º Frame:
///////////////////////////////////////////////////////////////
///////////////////////Script do Frame/////////////////////////
///////////////////////////////////////////////////////////////
//////////////SCOREs//////////////////
stop();
var scoretotal = 0;
var scorelv1 = 0;
var scorelv2 = 0;
var scorelv3 = 0;
var hit = 0;
var badhit = 0;
var mira;
mira = ((hit*100)/_root.nave.j) add "%";
/////////////Evita que o filme seja redimensionado/////////////
fscommand("allowscale", false);
////////////Torna o movieclip "laser" invisível////////////////
laser._visible = false;
//Define a variável "disparar" do movieclip com o valor false//
laser.disparar = false;
////////////////THE BAD GUYS
badlaser._visible = false;
badlaser.disparar = false;
////////////Torna o movieclip "missel" invisível////////////////
missel._visible = false;
missel.lancar = false;
////////////Torna o movieclip "escudo" invisível////////////////
escudo._visible = false;
/////////////////////Cria e Seta a Var Vida////////////////////
myColor = new Color(barra);
////////// HIT TEST //////////////////////////
var hit = false;
//// Danos das armas
var level = 3;
var badlevel = 1;
var danobuster = 30;
var dano = 10;
/// Contador de inimigos e explosôes
var cantaexp:Number = new Number();
cantaexp = 1;
var cantaini:Number = new Number();
cantaini = 1;
//////////////////Posição do UP/////////////////////
var flag = true;
/*
onClipEvent (enterFrame) {
if(hit) {
_root.escudo._visible = true;
}else{
_root.escudo._visible = false;
}
updateAfterEvent();
}
// _root.teste = this.hitTest (_root.nave);
// _root["laser"+j].disparar = true;*/
Enfim acho que isso é o básico para funcionar um game bem (bem mesmo). Vou para de posta antes que meu posta tenha 1K (K de Kilometro, e não Kbytes).
Há muito “código inútil” nos scripts, pois o jogo “completo” há mais recursos que eu não vou conseguir abordar agora. Vale lembrar que o código não está terminado, ainda há bugs e coisa que eu ainda não sei fazer.
O .fla do game está no meu site www.favelaproject.xpg.com.br (use o Mozilla)
O Link é: www.favelaproject.xpg.com.br/cont/utilidades/flossemburg/Flossembürg_Project.zip
Abraço a todos, espero ter sido útil.
#13
Posted 27 May 2007 - 02:10 PM
e a nave principal explodir?
E também gostaria de saber se tem como fazer isso sem fazer a nave principal independente,
mas no frame
Flws
#14
Posted 04 June 2007 - 08:45 PM
Meu enfoque no tutorial foi dar só um pontapé inicial para aqueles que não sabiam nada de games em flash.
Por isso não entrei em muitos detalhes.
Dado esse pontapé colocarei tutoriais de nível mais elevado, estou demorando postar outro devido ao fim do semestre na faculdade, ainda mais que estou no último ano de ciência da computação, é uma correria só.
Mas num vejo hora de postar um tutorial bem bacana, que envolva bastantes conceitos.
vlw!
#15
Posted 04 June 2007 - 08:49 PM
Para que o que vc quer acredito que basta vc dar uma olhadinha no código que trata da colisão entre o tiro e o inimigo e utilizar para fazer a comparação de hitTest entre o inimigo e a nave, não mais entre o tiro e o inimigo. o Código de criação dá explosão é o mesmo.
vlw!
#16
Posted 05 June 2007 - 08:35 PM
Para que o que vc quer acredito que basta vc dar uma olhadinha no código que trata da colisão entre o tiro e o inimigo e utilizar para fazer a comparação de hitTest entre o inimigo e a nave, não mais entre o tiro e o inimigo. o Código de criação dá explosão é o mesmo.
vlw!
É,mas eu até consegui fazer o inimigo explodir quando ele colidisse em mim,mas o problema, é que não estou conseguindo criar a variável vida para a nave.
Flws
#17
Posted 06 June 2007 - 11:25 AM
Acabei comentando sobre seu tutorial em outro tópico.
http://www.mxstudio.com.br/forum/index.php?showtopic=42764
#18
Posted 22 June 2007 - 05:18 PM
#19
Posted 25 July 2007 - 07:27 PM
no exemplo que vc usa no toturial o tiro some quando o inimigo explode no jogo que fiz o tiro continua aparecendo depois que o inimigo explode
aproveitando a oportunidade
teria como colocar mais inimigos no jogo, se sim como faço isso
#20
Posted 26 July 2007 - 06:16 PM
Imagino que a linha abaixo não esteja sendo executada, que é ação do próprio tiro, um motivo pode ser que algum nome do dos mc's podem estar errados. Dá verificada.
{
_root.inimigo.life=0; //zeramos o life, um tiro só é fatal
this.removeMovieClip(); //sumimos com o tiro da tela
}
Quanto criar vários inimigos é fazer como se faz com os tiros, são criados com o método
Éó modificar o nome do movie clip de tiro para inimigo e escolher o melhor posicionamento para ele, tem que ser num local que é executado várias vezes, pode ser no onEnterFrame onde são declaradas os cont e cont2.
flw
#21
Posted 27 July 2007 - 09:50 AM
realmente era os nomes que estavam errados, o segundo código funcionou direitinho tá duplicando os inimigos,
mas apareceu outro problema é que os tiros não estão pegando nas cópias
tipo assimquando aparecem vários inimigos, atiro numa das copias e o tira vai para o inimigo original
#22
Posted 27 July 2007 - 02:48 PM
{
_root.inimigo.life=0; //zeramos o life, um tiro só é fatal
this.removeMovieClip(); //sumimos com o tiro da tela
}
Observa que o teste de colisão está sendo feito no mc inimigo e não nas suas cópias, pra solucionar o problema creio que basta você cada vez que criar um inimigo armazená-lo num vetor para depois fazer o teste com cada um deles pra ver se colidiu usando um for para varrer este vetor. Por que tanto os tiros quanto os inimgos agora são cópias dos originalis então uma das formas de fazer e guardando as cópias dos inimigos e depois um laço para varrer e fazer os teste de colisão. Então este if que está acima vai ficar dentro do for.
flw
#23
Posted 06 August 2007 - 06:35 PM
e q tipow, eu ja estou quase terminando meu gamezinho de nave,
com a base daqueles simples quadradinhos azuis q explodiam
e atiravam no inimigo.
Fico muito grato a tds adm e a tds q me ajudaram
ah e se quiser ver como tah meu game,
podem ver nesse link http://www.flashbrasil.kit.net/jogodenave.swf
e mandem para o e-mail felipesfl@hotmail.com opiniões, ou por esse tópico:
http://www.mxstudio.com.br/forum/index.php?showtopic=46275
abçs
#24
Posted 07 August 2007 - 02:52 PM
Fico feliz daquele simples tutorial ter inspirado vc a fazer um jogo bacana.
flw kara.
#25
Posted 08 August 2007 - 09:14 PM
no meu jogo percentual de acerto
e coloquei o cont, o q contava o número de tiros,
e o cont2 q contava o número de pontos.
e tentei colocar um percentual, dividindo essas 2 variáveis
e eu coloquei o dinamic text como movie clip, coloquei o nome da variável do campo-texto,no caso porcento.
onClipEvent (enterFrame) {
porcento = _root.cont2() /_root.cont()*100;
}
ta escrevendo NaN nesse campo de texto
Queria saber se alguém pode me ajudar
flwws
#26
Posted 09 August 2007 - 11:17 AM
Creio que é porque vc tah usando cont e cont2 como se fossem funções, mas na verdade são variáveis. Creio que se vc fizer assim deve funcionar. Qualquer problema posta aí.
{
porcento = _root.cont2/_root.cont*100;
}
flw
#27
Posted 09 August 2007 - 11:54 AM
Eu sou novo aqui e tenho muito que aprender ainda e espero aprender muito com voces
só que sou meio cabeça dura pra entender algumas coisa
eu li e tentei fazer tudo que estava aqui no forum mais nao deu serto, porque dava erro de "as" quando nao dava nao fazia nada.
o que tentei fazer e oque gostaria de fazer:
1- mutiplos inimigos - eu fiz como esplicado no forum só que vinha 2 inimigos juntos quando explodia um o outro saia de detro dela e passava direto.
2- para mudar o comando "onMouseDown = function()" para atirar com a tecla de espaço eu mudo onde???
desculpe por ser tao burro eque eu tentei um monte de nome e deu erro
3- eu sou muito burro pra poder aprender AS???
pq eu usava o flash 5 Br. e só usava Stop(); Play(); e outras coisas simples. agora estou com o Flash 8
4- como eu coloco son no tiro, explosoes e de fundo.
se esses forem erros simples e estou colocando aqui por falta de atençao me desculpem e espero a ajuda de todos
PS.: alguem sabe d algum tutorial que sobre AS 2.0 Tem aqui no forum???
Obrigado ae pessoal!!!
#28
Posted 09 August 2007 - 12:30 PM
Como vc mesmo relatou, seu problema maior está sendo um pouco a dificuldade com o AS 2.0, essas mudanças que vc está propondo não vão ser fácei s de fazer se vc não tiver um pouco mais de conhecimento no AS 2.0.
Faz o seguinte:
Vai no portal do mxstudio www.mxstudio.com.br e use a busca no topo a direira por Action script 2.0, vai aparecer vários resultados. è bom começar por lá.
flw
#29
Posted 10 August 2007 - 03:47 PM
Creio que é porque vc tah usando cont e cont2 como se fossem funções, mas na verdade são variáveis. Creio que se vc fizer assim deve funcionar. Qualquer problema posta aí.
{
porcento = _root.cont2/_root.cont*100;
}
flw
fla e aew
até deu certo, mas o problema é que quando a variável porcento eh 0, qd divide o 0 pelo 0
aparece NaN, ao invés de 0.
flws
#30
Posted 19 August 2007 - 07:46 PM
quando eu destruir um inimigo eu some um “x ponto”
E depois eu salve esses pontos para quando eu jogar d novo
os pontos continue
#31
Posted 03 November 2007 - 04:47 PM
dá uma olha ai
http://www.mxstudio.com.br/forum/index.php?showtopic=50935
flws um abraço
#32
Posted 22 December 2007 - 11:12 PM
Eu não sei onde conseguir este conhecimento básico, já procurei sobre isso no google, e, após muita pesquisa, eu entendi que esse AS seria quase a mesma coisa que flash... O programa Macromedia Flash MX dá conta do recado para fazer jogos?
Bom, de qualquer forma, esse AS é um programa? Nos sites só dizem que é uma "linguagem de programação", admitindo que seja um programa, eu não o encontrei para download em lugar algum.
Qual o nome do programa, o qual você usou para fazer este "simples" joguinho?
Desculpe tantas perguntas de novato, e desde já, grato.
#33
Posted 26 December 2007 - 12:41 AM
AS é o a sigla de Action Script, é um uma linguagem de programação Orientada a Objetos, recomendo estudá-la antes de começar com games em flash, a última versão da linguagem é o AS 3.
O AS 3, está disponível no Macromedia Flash CS3, mas comece pelo básico. Depois vá ao Action Script 3, pode utilizar o Macromedia Flash MX para começar.
busque na home do portal os tutoriais de Action Script em www.mxstudio.com.br.
Qualquer coisa posta no fórum de Action Script.
flw
#34
Posted 26 December 2007 - 05:07 PM
Bom, de qualquer forma, esse AS é um programa? Nos sites só dizem que é uma "linguagem de programação", admitindo que seja um programa, eu não o encontrei para download em lugar algum.
Como o Márcio falou, AS é a sigla de ActionScript.
Flash e ActionScript não são as mesmas coisas, apesar de uma estar totalmente ligada a outra.
O ActionScript é a linguagem de programação do Flash.
No entando, existem algumas animações básicas que não precisam nem de programação.
Mas para coisas um pouco mais trabalhadas, é inevitável o uso de programação, no caso, ActionScript.
Qualquer dúvida poste no fórum principal: "Flash e ActionScript"
Abração !
#35
Posted 27 December 2007 - 05:18 PM
Obrigado
#36
Posted 31 December 2007 - 12:51 AM
Não mudará nada no teste de colisão, apenas vc tem que mudar o surgimento dos inimigos na tela, vc mesmo pode inventar uma forma de aparecer, uma dica é colocar os inimigos aparecendo de acordo com um intervalo de tempo, no tutorial eu fiz para aparecer somente se explodir ou se chegar ao final do stage.
Mas o teste de colisão e a criação dos inimigos com o duplicateMovieClip contiua da mesma forma, a quantidade de inimigos na tela não vai influenciar o teste de colisão, mas não coloque muitos inimgos na tela de uma vez, pois seu jogo ficará muito lento.
flw, espero ter esclarecido sua dúvida.
#37
Posted 12 February 2008 - 08:47 AM
Peço desculpa se estou a postar no sítio errado mas vi uma dúvida parecida à que tenho e como não tinha resposta, resolvi colocar aqui. Se estiver errada peço imensa desculpa.
Estou a fazer um site em flash mas a minha grande dúvida é na criação de um jogo.
O jogo é sobre a reciclagem e consiste em pegar na imagem do lixo e colocar no ecoponto correcto e claro, depois por cada resposta correcta tem a sua pontuação :|
Sei que tenho de fazer o movieclip arrastável, já consegui alguns exemplos na net mas o meu problema é, quando o largo junto do ecoponto, seja o correcto ou não, como faço para que o código verifique se a imagem foi largada no ecoponto correcto ou não? E depois também como faço para pôr as pontuações.
A lógica tenho-a na cabeça mas não tou a conseguir fazer em código.
Se alguem quiser ver um exemplo do jogo, um pouco diferente mas a lógica está lá, pode ir a este site www.pontoverde.pt e tem lá, no lado direito, o jogo da reciclagem.
Agradeço toda e qualquer ajuda!
P.S.: Se preferirem em mandar mail deixo aqui o meu contacto: neidejosepaixao@hotmail.com. Deixem no assunto Jogo em Flash
Muito obrigada
#39
Posted 08 April 2008 - 12:14 PM
Clica com o botao direito no primeiro frame e va na opção action, ira abrir uma janela coloque la os codigos
abbbssss
#40
Posted 01 May 2008 - 08:26 PM
1. var cont:Number = new Number();
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 2: Syntax error.
2. var cont2:Number = new Number();
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 3: Syntax error.
3. cont=0; //contadores de tiros
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 4: Syntax error.
4. count2=0; //contadores de explosões
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 5: Syntax error.
5. onEnterFrame=function()
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 6: '{' expected
6. {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 10: Syntax error.
10. if(Key.isDown(Key.LEFT) && nave._x >=20)
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 11: Syntax error.
11. nave._x -=20;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 12: Syntax error.
12. if(Key.isDown(Key.RIGHT) && nave._x <500)
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 13: Syntax error.
13. nave._x +=20;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 14: Syntax error.
14. if(Key.isDown(Key.UP) && nave._y >20)
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 15: Syntax error.
15. nave._y -=20;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 16: Syntax error.
16. if(Key.isDown(Key.DOWN) && nave._y <330)
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 17: Syntax error.
17. nave._y +=20;}
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 18: Syntax error.
18. onMouseDown = function()
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 19: '{' expected
19. {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 21: Syntax error.
21. _root.cont++;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 22: Syntax error.
22. _root.tiro.duplicateMovieClip(”tiro”+_root.cont,_root.cont,_root.cont); //duplicamos o tiro
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 24: Syntax error.
24. _root[”tiro”+_root.cont]._y = nave._y+10;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 25: Syntax error.
25. _root[”tiro”+_root.cont]._x = nave._x+10;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 19: Statement block must be terminated by '}'
19. {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 26: Operator '=' must be followed by an operand
26. }
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 6: Statement block must be terminated by '}'
6. {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 26: Syntax error.
26. }
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 1: Syntax error.
1. onClipEvent(enterFrame)
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 2: '{' expected
2. {
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 3: Syntax error.
3. if(_name != “tiro”)//verificação que serve para que sejam executados apenas as cópias do tiro, não o verdadeiro
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 4: ')' expected
4. {
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 5: Syntax error.
5. this._y-=30;
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 6: Syntax error.
6. if(this._y <0)//se o tiro passou do y=0 removemos o tiro
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 7: Syntax error.
7. this.removeMovieClip();
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 8: Syntax error.
8. if(this.hitTest(_root.inimigo)) //verifica se tiro colidiu com o inimigo
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 9: Syntax error.
9. {
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 10: Syntax error.
10. _root.inimigo.life=0; //zeramos o life, um tiro só é fatal
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 11: Syntax error.
11. this.removeMovieClip(); //sumimos com o tiro da tela
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 2: Statement block must be terminated by '}'
2. {
**Error** Symbol=Tiro, layer=Layer 1, frame=1:Line 14: Syntax error.
14. }
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 1: Syntax error.
1. onClipEvent(enterFrame)
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 2: '{' expected
2. {
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 5: Syntax error.
5. if(_name != “explosao”)
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 6: ')' expected
6. {
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 7: Syntax error.
7. if(this._alpha > 0) //serve para dar um efeito de explosão
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 8: Syntax error.
8. this._alpha -= 5;
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 9: Syntax error.
9. else
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 10: Syntax error.
10. this.removeMovieClip();
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 2: Statement block must be terminated by '}'
2. {
**Error** Symbol=Esplosao, layer=Layer 1, frame=1:Line 12: Syntax error.
12. }
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: Syntax error.
1. onClipEvent(enterFrame)
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 2: '{' expected
2. {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 4: Syntax error.
4. if(life<=0)
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 5: Syntax error.
5. {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 6: Syntax error.
6. _root.cont2++;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 8: Syntax error.
8. _root.explosao.duplicateMovieClip(”explode”+_root.cont2, _root.cont2,_root.cont2); _root[”explode”+_root.cont2]._x = this._x;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 9: Syntax error.
9. _root[”explode”+_root.cont2]._y = this._y;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 10: Syntax error.
10. this._x = random(300); //o inimigo volta numa posição randômica
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 11: Syntax error.
11. this._y = -150;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 12: Syntax error.
12. this.life = 100; //voltamos o life do inimigo
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 14: Syntax error.
14. else
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 15: Syntax error.
15. {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 16: Syntax error.
16. this._y+=10; //avança o inimigo em sua direção
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 17: Syntax error.
17. if(this._y > 300) //verifica se o inimigo ultrapassou o limite máximo da tela
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 18: Syntax error.
18. {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 22: Syntax error.
22. this._y = -20;
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 23: Syntax error.
23. this.removeMovieClip();
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 2: Statement block must be terminated by '}'
2. {
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 26: Syntax error.
26. }
Total ActionScript Errors: 66 Reported Errors: 66
O q q eu fiz de errado?
Share this topic:
Similar Topics
| Topic | Forum | Started By | Stats | Last Post Info | |
|---|---|---|---|---|---|
|
Tau Braga - Desenvolvimento e Serviços Web
Criação,Atualização e Edição de WebSites |
Mercado / Vagas |
Tau Braga
|
|
|
|
Microsoft aposta em games para celulares
Estadao.com.br |
Notícias |
TiTi Celestino
|
|
|
|
Brasil define delegação para campeonato mundial de games
|
Notícias |
Notícias
|
|
|
|
MySql
duvidas |
PHP |
manuela
|
|
|
|
Sony reorganiza unidade de videogames após ataque hacker
|
Notícias |
Notícias
|
|
|
|
YouTube cria 'escola' para educar internautas sobre direitos autorais
|
Notícias |
Notícias
|
|
|
|
Senac lança pós em programação de games
IDG Now! - Carreira |
Notícias |
TiTi Celestino
|
|
|
|
Decisão sobre Microsoft causa cisão entre membros da ISO
|
Notícias |
Notícias
|
|
Publicidade
|
|

Help














