Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucas Paixão

Problema com canhao atirando em As 3.0

Recommended Posts

estou fazendo um jogo simples para apresentação no curso de flash game.
o jogador controla um canhao no eixo X (direita e esquerda)
em cima passa um pirata(como algo), e o objetivo do jogo é matar o pirata

eu fiz esse código no as2.0

 

this.onEnterFrame = function()
{
timer++;
if (Key.isDown(Key.RIGHT))
{
canhao._x += 10;
}
else if (Key.isDown(Key.LEFT))
{
canhao._x -= 10;
}

if (Key.isDown(Key.SPACE))
{
i++;
if(timer >= 30)
{
_root.attachMovie("bala", "bala" + i, _root.getNextHighestDepth());
_root["bala" + i]._x = canhao._x;
_root["bala" + i]._y = canhao._y;

timer = 0;
}
}

}

 

esse é o código do meu canhao, movimento e tiro em As2.0

 

(depois do jogo pronto)

o professor confirma que quer o jogo em As3.0, e agora estou tentando migra-lo para o as3.0

 

movimento do canhao

 

var addcanhao:canhao0 = new canhao0();
addcanhao.x = 400;
addcanhao.y = 470;
addChild(addcanhao);

stage.addEventListener(KeyboardEvent.KEY_DOWN, movimentocanhao)
function movimentocanhao(event:KeyboardEvent): void
{
if (event.keyCode == Keyboard.LEFT)
{
addcanhao.x -= 10;
}

else if (event.keyCode == Keyboard.RIGHT)
{
addcanhao.x += 10;
}

if (event.keyCode == Keyboard.SPACE)
{

}
}

 

como eu faço para trazer aquele código para esse?? estou com muitas duvidas e completamente perdido com o As3.0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho uma pequena sugestão:

 

Eu acho melhor você criar variaveis boleanas para cada tecla que será pressionada

 

var right:Boolean = false;
var left:Boolean = false;
var space:Boolean = false;

 

Depois criar um eveto KeyboardEvent.KEY_DOWN;

 

Nesse evento terá um switch e irá setar a tecla pressionada para true.

 

 

switch(e.keyCode){
case Keyboard.LEFT:
left = true;
break;
case Keyboard.RIGHT:
right = true;
break;
case Keyboard.SPACE:
space = true;
break;
}

 

Depois criar um evento agora KEY_UP

 

Será igual ao KEY_DOWN mas ira setar a veriavel solta para false;

 

Depois você cria um enterframe

 

 

Nesse enterframe você coloca ifs para fazer o que quizer.

 

 

if(right){
//aqui anda para direita
}
if(left){
//aqui anda para esquerda
}
 

 

Eu acho isso a melhor opção pois ja me deu problema o fato de eu pressionar duas teclas num jogo e dar tudo errado.

Assim acho a melhor opção.

 

Outra sugestão é usar o Box2d para simular a física. Assim você só aplicaria a força a bola de canhão ao invéz de fazer tudo.

Mas dependendo de quanto simples for e a situação pode ser melhor não usar o box2d. Se você não precisar de fisica não precisa muito do box2d.

 

Qualquer dificuldade posta ai.

 

...

 

Eu fiz uma vez um jogo sem objetivo nenhum de canhão

 

http://forum.imasters.com.br/topic/457941-jogo-de-canhao-com-box2d-21a/ (tem um erro de ortografia em ingles numa função mas não considere)

 

Mas no seu caso deve ser bem mais simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.