Jump to content


Photo

_rotation Com Dois Key.isdown


  • Faça o login para participar
7 replies to this topic

#1 rodurma

rodurma

    Normal

  • Usuários
  • 64 posts
  • Sexo:Não informado

Posted 25/01/2005, 22:51

Pessoal crie um mc e nele coloquei o seguinte código:
onClipEvent (enterFrame) {
//essa parte é pra fazer ele mexer não faz parte da dúvida
if (Key.isDown(Key.UP) or Key.isDown(Key.DOWN) or Key.isDown(Key.LEFT) or Key.isDown(Key.RIGHT)) {
locomocao(velocidade);
}
//aqui começa a dúvida
if(Key.isDown(Key.UP)){
	this._rotation = 0;
} else if (Key.isDown(Key.LEFT)){
	this._rotation = -90;
} else if (Key.isDown(Key.RIGHT)){
	this._rotation = 90;
} else if (Key.isDown(Key.DOWN)){
	this._rotation = 180;
}
}

O mc e no formato de um personagem visto de cima.

Como fazer para quando a pessoa apertar a tecla "seta pra cima" junto com "seta pra direita" o mc rotacionar ficando de forma diagonal? (ficando assim / )

Tem o fla para download pra quem quiser me ajudar.

[]'s

Attached Files



#2 Saruman

Saruman

    Veterano

  • Usuários
  • 1112 posts
  • Sexo:Masculino
  • Localidade:São Paulo, SP

Posted 26/01/2005, 08:37

Olha eu naum sei naum... mas mesmo que soubesse, essa forma de girar não é um tanto estranha? Será que naum vale mais apena fazer o personagem girar gradualmente, você ganha uma maior amplitude no movimento do personagem... pensando nisso fiz uma Ação aqui que gira o MC do personagem gradualmente a medida em que se pressiona as telcas direita e esquerda, e vai para frente e para trás conforme se pressiona as teclas Cima e Baixo. A ação é meio complicada pois envolve alguns conceitos básicos de trigonometria que pode m não ser conhecidos. Mas tah ae...

onClipEvent (enterFrame) {
if (Key.isDown(Key.UP) or Key.isDown(Key.DOWN) or Key.isDown(Key.LEFT) or Key.isDown(Key.RIGHT)) {
des = 10; // deslocamento, isto é, quanto o objeto vai andar para frente
rot = 10; //rotação, isto é, quantos graus ele vai rodar
angulo = this._rotation; //esta variavel pega o valor da rotação do MC
radianos = (angulo * Math.PI)/180; //transforma o angulo acima em radianos pro Flash trabalhar
d_x = des*(Math.sin(radianos)); //é uma fórmula trigonométrica que encontra o valor do deslocamento no eixo X para que o deslocamento para frente seja 10
d_y = des*(Math.cos(radianos)); //idem... só que no eixo Y
}
if (Key.isDown(Key.LEFT)){
this._rotation -= rot; //gira o MC no sentido anti-horário em 10 graus
} else if (Key.isDown(Key.RIGHT)){
this._rotation += rot; //gira o MC no sentido horário em 10 graus
} else if (Key.isDown(Key.UP)){
//desloca o MC no eixo Y e no X
this._x+=d_x;
this._y+=-d_y;
} else if (Key.isDown(Key.DOWN)){
//desloca o MC no eixo Y e no X
this._x+=-d_x;
this._y+=d_y;
}
}

Qlqr duvida posta ae...
import Profile;

var saruman:Profile = new Profile();

saruman.nome = new String("Tiago S. Kaneta");

saruman.localizacao = new Array("São Paulo","SP");

#3 djmark

djmark

    Turista

  • Usuários
  • 28 posts
  • Sexo:Não informado
  • Localidade:Blumenau-SC
  • Interesses:musica, web designer

Posted 29/01/2005, 08:19

po cara aproveitei a ideia para criar um joguinho, mas queria saber como colocar um outro item que fique correndo atraz da bolinha ( que é controlada pelo internauta), de forma que se o cara ficar parado e o outro objeto escostar na bolinha aparece uma mensagem "perdeu" ou avança pra um quadro diferente!

ps: o objeto (vilão) deve ter velocidade um pouco menor do que a velocidade padrão da bolinha.

Edição feita por: djmark, 29/01/2005, 08:21.

::DJ Mark Stroke::
www.djmark.blig.com.br

#4 quarantines

quarantines

    idi Development Institute

  • Usuários
  • 318 posts
  • Sexo:Masculino
  • Localidade:Santa Cruz Cabrália - Costa do Descobrimento - Bahia
  • Interesses:Design, ActionScript, ASP, Flash, XML, Fireworks, Photoshop, Fotografia, Feijão com Arroz e ovo frito, Escrituras, Ajudar pessoas

Posted 29/01/2005, 09:30

Fala Garoto

Então esse até um processo simples...

Bem, vou postar como funciona o esquema e vc dá uma busca aí no fórum pra pegar o resto do código, ok?

No seu Stage, vc vai ter q criar dois moviclips... um vai ser a bolinha q persegue e o outro o perseguido, ok?

Instancie os dois...

A lógica do negócio é a seguinte:

primeiro vc vai ter q dar ação de movimento ao MC q vai ser perseguido (vamos chamá-lo de "carinha")... as ações já foram postadas pelo Saruman, ok?

Depois, terá q dar ação de movimento ao MC que persegue, ok?

ele funciona assim:

function MCpersegue () {

	/// Declarar as variaveis da função
	xpersegue = _root.persegue._x  // Posição X do MC Persegue
	ypersegue = _root.persegue._y // Posição Y do MC Persegue
	xmouse = _root._xmouse // Posição X Mouse
	ymouse = _root._ymouse // Posição Y Mouse
	speed = 5  // Velocidade do MC persegue
	
	/// Lógica do Movimento
	if (xpersegue + speed < xmouse) {  // Se o mouse estiver à direita
  _root.persegue._x += speed // MC move para a direita
	}  else if (xpersegue - speed > xmouse){ // Se o mouse estiver à esquerda
  _root.persegue._x -= speed // Balao move para a esquerda	
	}
	
	if (ypersegue + speed < ymouse) {  // Se o mouse estiver à acima
  _root.persegue._y += speed // MC move para cima
	}  else if (ypersegue - speed > ymouse){ // Se o mouse estiver à abaixo
  _root.persegue._y -= speed // MC move para baixo	
	}
}

setInterval(MCpersegue , 50) // tempo q a função é atualizada... no caso, 50/1000, sendo q 1000 representa 1 segundo, ok?


Agora, vc tem q colocar a ação q diz qdo o MC persegue atinge o MC carinha, ok?

isso é feito com a função hitTest q funciona assim:

Lógica
"se o MC persegue tocar o MC carinha acontece o seguinte"

Ação:

colocar ação dentro de uma função*

if (_root.persegue.hitTest(_root.carinha) // se MC persegue tocar MC carinha
                 perder(); // chama a função perder

Agora vc tem q criar a função perder... q, aí, depende do q vc qr... se vai prum next frame... ou abre um pop-up...

E isso aí cara...

Espero q ajude

Abraços,

iDI

#5 rodurma

rodurma

    Normal

  • Usuários
  • 64 posts
  • Sexo:Não informado

Posted 29/01/2005, 11:23

valeu ai a todos.
Postei um tópico com o arquivo .fla pra download mais ele sumiu <_<

Esse ainda não tem o carinha que persegue.

[]'s

Attached Files



#6 Saruman

Saruman

    Veterano

  • Usuários
  • 1112 posts
  • Sexo:Masculino
  • Localidade:São Paulo, SP

Posted 29/01/2005, 14:37

Mas jah funciono o q vc qria fazer?
import Profile;

var saruman:Profile = new Profile();

saruman.nome = new String("Tiago S. Kaneta");

saruman.localizacao = new Array("São Paulo","SP");

#7 rodurma

rodurma

    Normal

  • Usuários
  • 64 posts
  • Sexo:Não informado

Posted 29/01/2005, 14:50

Mas jah funciono o q vc qria fazer?

Sim,
Estarei tentando colocar o carinha que persegue quando sair posto aqui com o .fla

A gente podia juntar o conhecimento de todos e montar um jogo onde a pessoa pode postar seus pontos no final do jogo pra ir para um ranking.

O que vocês acham da idéia?

O legal seria alguêm que fosse bom em design pra fazer os gráficos. E ai quem se habilita?

[]'s

#8 Saruman

Saruman

    Veterano

  • Usuários
  • 1112 posts
  • Sexo:Masculino
  • Localidade:São Paulo, SP

Posted 29/01/2005, 15:16

Com a parte de AS eu ajudo... mas nos gráficos sou péssimo...
import Profile;

var saruman:Profile = new Profile();

saruman.nome = new String("Tiago S. Kaneta");

saruman.localizacao = new Array("São Paulo","SP");




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq