• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

TS91

Fire in the hole

17 mensagens neste tópico

Boas,

eu tou a fazer um jogo de naves tipo Invasores, mas nao consigo fazer disparar as balas.

Alguem pode me ajudar?

Cumpz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual a parte que não consegues fazer?

Das fisicas? tipo velocidade da bala?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o teu jogo é tipo "galaxy" ?

1_big.jpg

Onde tens a tua nave em baixo e disparas para os objectos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tou a fazer disparar a bala.

Ja tenho a nave a andar e os limites controlados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então basta veres qual a posição da arma da nave. Depois crias um laser a sair a partir dessa localização. Em Flash dá para criar bitmaps ou algo do género.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vamos por partes...

Primeira fase disparar objectos a partir do centro da tua nave...

saber quantos tiros disparou.

import mx.transitions.Tween;
import mx.transitions.easing.*;

var vSpeed:Number = 10; //Velocidade do tiro
var numTiros:Number = 0;//Numero de tiros disparados

//Criar o objecto NAVE
createEmptyMovieClip("mcNave",this.getNextHighestDepth());
mcNave.beginFill(0x000000, 100);
mcNave.lineTo(5, 0);
mcNave.lineTo(5, 5);
mcNave.lineTo(0, 5);
mcNave.lineTo(0, 0);
mcNave.endFill();
//Definir o tamanho da nave
mcNave._width = 100;
mcNave._height = 30;

//Posicionar a nave
mcNave._x = (Stage.width/2)- (mcNave._width/2)
mcNave._y = (Stage.height - (mcNave._height/2))

//Criar o objecto que será o tiro
createEmptyMovieClip("mcTiro",this.getNextHighestDepth());
mcTiro.beginFill(0x000000, 100);
mcTiro.lineTo(5, 0);
mcTiro.lineTo(5, 5);
mcTiro.lineTo(0, 5);
mcTiro.lineTo(0, 0);
mcTiro.endFill();

//Posicionar o tiro
mcTiro._x = -20;
mcTiro._y = -40;

this.onEnterFrame = function(){
   //Função será sempre executada frame by frame

   if (Key.isDown(Key.LEFT)) {
        //Quando pressionada a tecla <- (seta Esquerda) move a nave para a esquerda 
   	 mcNave._x -= vSpeed
    }

if (Key.isDown(Key.RIGHT)) {
        //Quando pressionada a tecla -> (seta Direita) move a nave para a direita
   	 mcNave._x += vSpeed
    }


if (Key.isDown(Key.SPACE)) {
               //Quando pressionada a tecla SPACE dispara tiros  

	//Incrementar o número de tiros disparados
                numTiros++;

	//Criar o objecto tiro
   	duplicateMovieClip (mcTiro, "mcTiros" + numTiros, numTiros);
	//Captar o objecto para a variável mcTiro
	mcTiro = eval("mcTiros" + numTiros);
	//Posicionar o tiro no centro superior da nave
	mcTiro._x = mcNave._x + (mcNave._width/2);
	mcTiro._y = mcNave._y;

       //Animação que levará o tiro desde a sua posição inicial até ao cimo do stage (ficando invisível)
	goToUp = new Tween(mcTiro, "_y",None.easeOut,mcTiro._y,(0-mcTiro._height),1,true);

    }

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só mais uma coisa da para controlar alguma coisa por tempo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como assim? quando chegar ao tempo X saltar para uma frame Y ? Tipo GAME OVER????

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hm ora podes usar um timer deste genero:


var tm:Timer = new Timer(1000,3);
tm.addEventListener(TimerEvent.TIMER_COMPLETE,funcaoPretendida);

function funcaoPretendida(e:Event):void{
//fazeres o que queres aqui dentro..
}

assim podes controlar a execuçao de algo apartir do timer :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só um reparo na defenição da variável timer pois com o parâmetro 3 à frente dos milissegundos vai fazer um loop de 3x e depois para. Assim sem o parâmetro é tempo sempre contínuo.

var tm:Timer = new Timer(1000);
tm.addEventListener(TimerEvent.TIMER,funcaoPretendida);

Se precisares de "matar" o tempo podes fazer da seguinte forma

tm.stop();
tm.removeEventListener(TimerEvent.TIMER, posicionaObjecto);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só um reparo na defenição da variável timer pois com o parâmetro 3 à frente dos milissegundos vai fazer um loop de 3x e depois para. Assim sem o parâmetro é tempo sempre contínuo.

Exactamente, usei o 3 meramente a titulo de exemplo, my bad, por vezes penso que as pessoas quando vao usar uma funçao pelo menos leem a sua documentaçao mas nem sempre acontece e se afinal estou aqui para tentar ajudar podia ter dito isso... :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto tens razão :P normalmente tenho sempre a tendência de carregar no F1 n vezes quando programo :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora