logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

Você faz hitTest dentro de um for no EnterFrame?

Colocado por Gabriela T. Perry na(s) categoria(s): Flash games em 11 22nd, 2009 | Sem comentários

Então você faz hitTestObject no for dentro de um EnterFrame, hein? Deixa eu adivinhar:

hero.addEventListener(Event.ENTERFRAME, testaColisao);
function testaColisao(evt:Event):void{
       var hero:MovieClip=MovieClip(evt.currentTarget);
       var inimigo:MovieClip;
 
       for(var i:int=0; i < inimigos.lenght; i++){
              inimigo=MovieClip(inimigos[i]);
 
              if(hero.hitTestObject(inimigo)){
                     trace("bateu!!!");
              }
       }
}

Tá loco!!!

Quem sabe você pensa diferente e faz com um Array bidimensional? A idéia é que cada vez que (por exemplo), seu hero se mover ou se cenário se moverem, você muda o índice do Array. Se tem alguma coisa com que colidir, o ínidice é 1. Se não, é 0.

var mapa:Array= [
 [0,0,0,0,0,0,0,0],
 [0,0,0,0,1,0,0,0],
 [0,0,0,0,1,0,0,0],
 [0,0,0,0,1,0,0,0],
 [0,0,0,0,0,0,0,0],
 [0,0,0,1,1,1,0,0],
 [0,0,0,0,0,0,0,0],
 [0,0,0,0,0,0,0,0]
];
 
var vel:int=200/mapa[0].length;
var indiceX:int=4;
var indiceY:int=7;
 
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveCenario);
function moveCenario(evt:KeyboardEvent) {
	if (evt.keyCode==Keyboard.LEFT) {
		if (mapa[indiceY][indiceX-1]!=1) {
			indiceX-=1;
                            fundo.x+=vel;
	}
}

Neste exemplo o cenário anda apenas quando a tecla LEFT do teclado é pressionada. A posição inicial (os valores inicias das variáveis indiceX e indiceY) é dada pela posição do hero no cenário.
O resultado é este (clique sobre a]o swf para dar foco e use a tecla LEFT):

O código que está aí não está completo… Você só vai conseguir dar um passo para cima (na verdade, é o cenário que se move) e vai dar de “cara” na parede.  Além disso, se você baixar o fla, vai perceber que não implementei controles de cenário (impedir a movimentação quando chegar nos extremos). Mas tudo isso é implementável. Esta base é usada por engines “isométricas” para controlar tanto a movimentação quanto as colisões e profundidades (o que está na frente e o que está atrás).

Uma engine bem conhecida é esta aqui: http://code.google.com/p/as3isolib/

E se você achou bala esse código (porque eu acho!) pode ler muito mais sobre isso neste site, que é uma importante referência para quem faz games (fpara flash): http://www.tonypa.pri.ee/

1258893321_Flash Baixe aqui o fla

PS: Este post foi escrito porque meus alunos de projeto de games, o Beto e o William me torraram a paciência até eu explicar como fazia isso. Eu não podia deixar eles fazendo hitTest no for dentro de um EnterFrame para um cenário com 5.000 pixels de largura. Boa sorte meninos! Quero ver esse jogo funcionando!



Veja o post original no blog do autor aqui!  

Gabriela T. Perry

Escrito por Gabriela T. Perry @ http://www.gabriela.trindade.nom.br
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» To tree or not to tree?
» P&D 2010: eu fui!
» Mobile design = interaction hell

Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2795 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com